2014-10-10 83 views
0

我试图更改表并为可空列设置默认值。但我得到以下错误。无法将默认值设置为INT(11)更改表

下面是一个命令:

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

您忘记了数据类型。您的意思是

ALTER TABLE `questiontboard`.`questions` 
CHANGE COLUMN `status` `status` INT(11) NULL DEFAULT 1 ; 
           ^^^ 
+0

这是尴尬。 Mysql Workbech auto在INT(11)列上生成此命令。谢谢。 – 2014-10-10 08:58:21

1

您的查询应该是这样的:

ALTER TABLE `questiontboard`.`questions` 
CHANGE COLUMN `status` `status` int(11) NULL DEFAULT 1 ; 
           ^^ here add int as you want the datatype 

你缺少在查询字段的数据类型。

0

改变表格时出现同样的错误。我做了完全一样的事情(减去代码错字)。

我将SMALLINT中的列更改为varchar(n)时出现错误。它给出“1050表已存在...”错误。错误令人困惑。当然,桌子是存在的,这就是为什么我要改变它!

最后,我发现问题是我的新varchar(2)不足以容纳所有原始smallint数据。我有一行有4位数字,所以varchar(2)不起作用。我改变它使用varchar(4),它的工作。

ALTER TABLE omiccom_wpmyTable CHANGE COLUMN myColumnmyColumn VARCHAR(2)NOT NULL DEFAULT'0';