无法将默认值设置为INT(11)更改表

时间:2014-10-10 08:55:44

标签: mysql alter-table

我正在尝试更改表并为可为空的列设置默认值。但我得到以下错误。

这是命令:

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

我做错了什么?

3 个答案:

答案 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_wpmyTable CHANGE COLUMN myColumn myColumn VARCHAR(2)NOT NULL DEFAULT'0';