簡體   English   中英

無法將列添加到 MySQL 中的現有表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM