【问题标题】:Can't set a default value to INT(11) altering table无法将默认值设置为 INT(11) 更改表
【发布时间】:2014-10-10 08:55:44
【问题描述】:

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

命令如下:

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

我做错了什么?

【问题讨论】:

    标签: mysql alter-table


    【解决方案1】:

    您忘记了数据类型。你是说

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

    【讨论】:

    • 这很尴尬。 Mysql Workbech 在 INT(11) 列上自动生成此命令。谢谢。
    【解决方案2】:

    您的查询应该是这样的:

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

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

    【讨论】:

      【解决方案3】:

      我在更改表格时遇到了同样的错误。我做了和你一样的事情(减去代码拼写错误)。

      将列从 SMALLINT 更改为 varchar(n) 时出现错误。它给出了“1050 表已经存在...”错误。该错误令人困惑。当然该表存在,这就是我试图改变它的原因!

      最后,我发现问题在于我的新 varchar(2) 不够大,无法容纳所有原始的 smallint 数据。我有一排有一个 4 位数字,所以 varchar(2) 不起作用。我将其更改为使用 varchar(4),它起作用了。

      更改表omiccom_wp.myTable 更改列 myColumn myColumn VARCHAR(2) NOT NULL DEFAULT '0' ;

      【讨论】:

        猜你喜欢
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多