[英]Can't add column to existing table in MySQL
嘗試使用以下查詢將列添加到現有表:
ALTER TABLE users ADD exp_date DATE NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER paidthru;
收到此錯誤:
ALTER TABLE 用戶添加 exp_date DATE NOT NULL DEFAULT CURRENT_TIMESTAMP AFTERpaidthru; MySQL 說:文檔
#1067 - 'exp_date' 的默認值無效
在下面嘗試 [因為 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`;
您正在添加一個 DATE 列,但給它一個不兼容的 DATETIME 默認值。
請改用DEFAULT CURRENT_DATE
或將您的字段更改為DATETIME
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
看起來它接受了它,但它用CURDATE()
替換了CURRENT_DATE
。 這些都是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.