首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在MySQL中向现有表添加列

问无法在MySQL中向现有表添加列
EN

Stack Overflow用户
提问于 2022-08-09 00:08:38
回答 3查看 54关注 0票数 0

尝试使用以下查询向现有表添加列:

代码语言:javascript
复制
ALTER TABLE users ADD exp_date DATE NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER paidthru;

获取此错误:

ALTER用户在paidthru之后添加exp_date日期而不是NULL缺省CURRENT_TIMESTAMP;MySQL说:文档 #1067 -“exp_date”的默认值无效

EN

回答 3

Stack Overflow用户

发布于 2022-08-09 04:33:58

在下面尝试,因为DATE列没有默认值为"CURRENT_TIMESTAMP“

代码语言:javascript
复制
ALTER TABLE `users` ADD `exp_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `paidthru`;

或

代码语言:javascript
复制
ALTER TABLE `users` ADD `exp_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `paidthru`;
票数 2
EN

Stack Overflow用户

发布于 2022-08-09 00:13:26

您正在添加日期列,但将其设为日期时间默认值,这是不兼容的。

改用DEFAULT CURRENT_DATE或将字段更改为DATETIME

票数 0
EN

Stack Overflow用户

发布于 2022-08-09 00:31:00

除非使用新的CURRENT_DATE,否则表达式默认语法在MySQL 8.0中的应用不是有效的默认设置。

代码语言:javascript
复制
mysql> create table users (id serial primary key);
Query OK, 0 rows affected (0.03 sec)

mysql> alter table users add exp_date date not null default current_date;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'current_date' at line 1

哇哦!再试一次,加上额外的括号:

代码语言:javascript
复制
mysql> alter table users add exp_date date not null default (current_date);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table users\G
*************************** 1. row ***************************
       Table: users
Create Table: CREATE TABLE `users` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `exp_date` date NOT NULL DEFAULT (curdate()),
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

看起来它接受了它,但是它用CURRENT_DATE代替了CURDATE()。这些是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73285245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档