我想在已有数据的MySQL 5.7表中添加一个新的NOT NULL
列。我看过this question,并使用了那里建议的解决方案。
我将新列添加为NULL
,为新列填充数据,然后将该列从NOT NULL
更改为NULL
。
-- 1. add new column as null
ALTER TABLE `mytable` ADD COLUMN newCol BIT NULL AFTER curCol;
-- 2. populate default data for new column
SET sql_safe_updates = 0;
UPDATE `mytable` SET newCol = 0;
SET sql_safe_updates = 1;
-- 3. change the column to NOT NULL
ALTER TABLE `mytable` ALTER COLUMN newCol BIT NOT NULL;
但是在最后一个命令中,我遇到了以下错误:
错误代码:1064。您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,位于第1行附近的“BIT NOT NULL:”
ALTER TABLE... ALTER COLUMN...
看起来像是Oracle RDB语法。Oracle RDB是在DEC长时间的死亡挣扎期间于1994年被Oracle从Digital Equipment Corporation收购的,在此之前,DEC被Compaq收购(后来被HP收购)。所有这些不同的数据库产品都使用不同的DDL语句语法(CREATE TABLE、ALTER TABLE等),并具有不同的功能。生活难道不美好吗? :-) - Bob Jarvis - Слава Україні