【发布时间】:2019-09-19 23:03:14
【问题描述】:
我想在 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:”附近使用的语法
【问题讨论】:
-
你运行的是什么版本的 MySQL?
-
我使用的是 MySQL 5.7(目前在 MySQL Workbench 中运行)
-
ALTER COLUMN newCol BIT NOT NULL
-
@VitalyBorisov:对不起,这是一个错字,我已经更新了
-
Oracle Corporation 销售(或免费赠送)多个数据库,其中包括:他们的旗舰 Oracle RDBMS、MySQL 和 Oracle RDB。
ALTER TABLE...ALTER COLUMN...看起来像 Oracle RDB 语法。 Oracle RDB 于 1994 年在 DEC 长期缓慢的死亡痛苦中被 Oracle 从 Digital Equipment Corporation 收购,之后 DEC 被 Compaq 收购(随后被 HP 收购)。所有这些不同的数据库产品对其 DDL 语句(CREATE TABLE、ALTER TABLE 等)使用不同的语法并具有不同的功能。生活不是盛大吗? :-)