当我试图改变一个列的数据类型并设置一个新的默认值时,我得到了以下错误:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
错误1064(42000):你有一个错误的SQL语法;检查 右边是MySQL服务器版本对应的手册 语法使用'VARCHAR(255) NOT NULL SET DEFAULT '{} "在第一行
当我试图改变一个列的数据类型并设置一个新的默认值时,我得到了以下错误:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
错误1064(42000):你有一个错误的SQL语法;检查 右边是MySQL服务器版本对应的手册 语法使用'VARCHAR(255) NOT NULL SET DEFAULT '{} "在第一行
当前回答
如果要为已创建的列添加默认值,请执行以下操作 这对我来说很管用:
ALTER TABLE Persons
ALTER credit SET DEFAULT 0.0;
其他回答
ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';
第二种可能也是这样(感谢juergen_d):
ALTER TABLE foobar_data CHANGE COLUMN col col VARCHAR(255) NOT NULL DEFAULT '{}';
Accepted Answer很好。
在出现无效使用NULL值错误时,对于NULL值,将该列中的所有NULL值更新为默认值,然后尝试执行更改。
UPDATE foobar_data SET col = '{}' WHERE col IS NULL;
ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';
使用这种方法:-
修改表foobar_data 修改字段字段(255)不设NULL
如果要为已创建的列添加默认值,请执行以下操作 这对我来说很管用:
ALTER TABLE Persons
ALTER credit SET DEFAULT 0.0;
默认的CURRENT_TIMESTAMP:
ALTER TABLE tablename
CHANGE COLUMN columnname1 columname1 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CHANGE COLUMN columnname2 columname2 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
请注意双columnname声明
删除默认CURRENT_TIMESTAMP:
ALTER TABLE tablename
ALTER COLUMN columnname1 DROP DEFAULT,
ALTER COLUMN columnname2 DROPT DEFAULT;