我正在尝试更改表并为可为空的列设置默认值。但我得到以下错误。
这是命令:
ALTER TABLE `questiontboard`.`questions`
CHANGE COLUMN `status` `status` (11) NULL DEFAULT 1 ;
这是错误:
ERROR 1064: 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 '(11) NULL DEFAULT 1' at line 2
SQL Statement:
ALTER TABLE `questionboard`.`questions`
CHANGE COLUMN `status` `status` (11) NULL DEFAULT 1
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'question' already exists
我做错了什么?
答案 0 :(得分:3)
您忘记了数据类型。你的意思是
ALTER TABLE `questiontboard`.`questions`
CHANGE COLUMN `status` `status` INT(11) NULL DEFAULT 1 ;
^^^
答案 1 :(得分:1)
您的查询应该是:
ALTER TABLE `questiontboard`.`questions`
CHANGE COLUMN `status` `status` int(11) NULL DEFAULT 1 ;
^^ here add int as you want the datatype
您缺少查询中字段的数据类型。
答案 2 :(得分:0)
更改表时出现同样的错误。我做了完全相同的事情(减去代码拼写错误)。
将列从SMALLINT更改为varchar(n)时出错。它给出了“1050表已存在...”错误。错误令人困惑。当然桌子存在,这就是我试图改变它的原因!
最后,我发现问题是我的新varchar(2)不足以容纳所有原始的smallint数据。我有一行有4位数字,所以varchar(2)不起作用。我把它改为使用varchar(4),它起作用了。
ALTER TABLE omiccom_wp
。myTable
CHANGE COLUMN myColumn
myColumn
VARCHAR(2)NOT NULL DEFAULT'0';