【问题标题】:How can I change my existing column in MariaDB to Not Null?如何将 MariaDB 中的现有列更改为 Not Null?
【发布时间】:2016-06-15 14:46:24
【问题描述】:

消息:您的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在 ''country_of_residence_id' INTEGER NOT NULL' 语句附近使用: ALTER TABLE 地址 ALTER COLUMN 'country_of_residence_id' INTEGER NOT 空

在我的表“地址”中,我想将一个已经存在的列“country_of_residence_id”设置为 NOT NULL。

我是这样尝试的:

ALTER TABLE address
ALTER COLUMN 'country_of_residence_id' INTEGER NOT NULL;

我的 IDE 在 INTEGER 下划线并说:DROP or SET expected, got "INTEGER"

当我在 INTEGER 之前添加 SET 时,它也不起作用。

【问题讨论】:

    标签: mysql mariadb notnull


    【解决方案1】:

    我在这里找到了它: https://mariadb.com/kb/en/mariadb/alter-table/

    alter table address modify country_of_residence_id bigint unsigned NOT NULL;
    

    【讨论】:

      【解决方案2】:

      首先,让行的所有现有NULL 值消失:

      UPDATE [Table_Name] SET [Column_Name]=0 WHERE [Column_Name] IS NULL;
      

      然后,更新(更改)表定义以拒绝NULLs:

      ALTER TABLE [Table_Name] MODIFY [Column_Name] BIGINT UNSIGNED NOT NULL;
      

      【讨论】:

      • 如果表中已有值,则更新空值行是关键,否则没有任何变化,您会得到类似:ERROR 1265 (01000): Data truncated for column 'confirmed' at row 1 我认为出于这个原因,这应该被接受。
      猜你喜欢
      • 2019-08-23
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 2011-06-12
      相关资源
      最近更新 更多