【问题标题】:change column definition in existing table更改现有表中的列定义
【发布时间】:2016-12-19 09:28:14
【问题描述】:

我需要从我的列标签中编辑一个数据类型 (IS_NULLABLE)。 没有任何效果,我试过这样:

ALTER TABLE veille
ALTER COLUMN tag
SET IS_NULLABLE false

或类似:

ALTER TABLE veille ALTER COLUMN tag Modify datatype false

但也不起作用,我有这个错误:

 Error: 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 'IS_NULLABLE false' at line 3. 

编辑:已解决,问题是我的列有空值,我已经更改了这些空值并且一切正常。

【问题讨论】:

  • 错误是什么?
  • ALTER TABLE veille ALTER COLUMN tag SET NOT NULL 如果你试试这个呢?
  • 没用过squirrel但是sql不应该是这样的吗? ALTER TABLE veille ALTER COLUMN tag datatype NOT NULL
  • 这与Squirrel无关,而与您使用的数据库有关。那是哪个DBMS?但是没有一个 DBMS 有一条错误消息,上面写着“不起作用”。 edit您的问题并添加您收到的确切错误消息。
  • 我有错误:错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“IS_NULLABLE false”附近使用正确的语法。我有同样的错误:ALTER TABLE veille ALTER COLUMN tag SET NOT NULL 和:ALTER TABLE veille ALTER COLUMN tag数据类型非空

标签: mysql sql ddl alter


【解决方案1】:

使用

ALTER TABLE veille ALTER COLUMN tag datatype

默认情况下,列可以为空,只要该列没有声明为 UNIQUE 或 NOT NULL,应该没有任何问题。

参考这个问题:How do I modify a MySQL column to allow NULL?

【讨论】:

    【解决方案2】:

    不需要datatype false 只需使用如下查询

    alter table table_name modify column tag <datatype> not null;
    

    【讨论】:

    • 谢谢,但这会修改​​我的列标签中的“列默认值”字段。我想在同一列中修改我的字段“IS_NULLABLE”
    【解决方案3】:

    试试ALTER TABLE veille_ndd_hist MODIFY tag bit(1) NOT NULL DEFAULT b'0;

    你也可以试试ALTER TABLE veille_ndd_hist CHANGE COLUMN tag tag BIT NOT NULL

    请注意,当使用 MODIFY 时,您需要指定完整的列定义,包括 DEFAULT 值(如果已定义)。

    旁注:当然要确保该列没有任何空值

    【讨论】:

    • @Ygg69 确切的错误是什么,你的语法是什么?
    • 错误是:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'IS_NULLABLE NOT NULL 附近使用正确的语法,我的语法是:
    • sry 失败,无法编辑我的帖子,我的语法是:ALTER TABLE veille_ndd_histo MODIFY tag IS_NULLABLE NOT NULL
    • @Ygg69 运行这个SHOW CREATE TABLE veille_ndd_histo。并复制您的列定义,然后添加 NOT NULL
    • 类似的东西? SHOW CREATE TABLE veille_ndd_hist ALTER COLUMN tag BIT NOT NULL ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2012-06-30
    • 2019-03-09
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多