尝试使用以下查询向现有表添加列:
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”的默认值无效
发布于 2022-08-09 04:33:58
在下面尝试,因为DATE列没有默认值为"CURRENT_TIMESTAMP“
ALTER TABLE `users` ADD `exp_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `paidthru`;或
ALTER TABLE `users` ADD `exp_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `paidthru`;发布于 2022-08-09 00:13:26
您正在添加日期列,但将其设为日期时间默认值,这是不兼容的。
改用DEFAULT CURRENT_DATE或将字段更改为DATETIME
发布于 2022-08-09 00:31:00
除非使用新的CURRENT_DATE,否则表达式默认语法在MySQL 8.0中的应用不是有效的默认设置。
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哇哦!再试一次,加上额外的括号:
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()。这些是一样的。
https://stackoverflow.com/questions/73285245
复制相似问题