2014-10-10 84 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';