如何在 MySQL 中将默认 Null 更改为 NOT NULL

Posted

技术标签:

【中文标题】如何在 MySQL 中将默认 Null 更改为 NOT NULL【英文标题】:How to Change Default Null to NOT NULL in MySQL 【发布时间】:2017-07-13 12:30:47 【问题描述】:

我在表 room 中有以下列现在我想将列 property_id 的定义从 NULL 更改为 NOT NULL 我该怎么做 以下查询不起作用

ALTER TABLE `room` CHANGE `property_id` `property_id` bigint(20)  NOT NULL;

Column的实际定义是:

 `property_id` bigint(20) DEFAULT NULL,

【问题讨论】:

在更改表定义之前是否有任何行包含NULL 是的,我应该删除那些行吗? 在更改列条件之前是的 @SFAH 您本身不需要删除它们。但是当您更改列定义时,它们不能是NULL。您需要如何处理数据取决于您的数据以及您如何使用它。 @SFAH,那么你不能这样做,你必须先处理那些NULL,否则如果会与列属性冲突 【参考方案1】:

mysql 中你可以做到这一点,

ALTER TABLE room MODIFY property_id bigint(20) not null;

【讨论】:

在其他 dbms 中,例如 oracle,它不允许您更改非空列,但是当您更改列时,mysql 会自动为您转换内容 @SFAH,但是您在查询中保留了两个“property_id”。检查一次。【参考方案2】:

我的查询非常好,唯一的错误是有些行包含空记录,所以它为什么会产生问题

【讨论】:

以上是关于如何在 MySQL 中将默认 Null 更改为 NOT NULL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt Creator 中将默认的预选应用程序类型从普通 C 应用程序永久更改为普通 C++ 应用程序?

如何在Vuetify组件中将光标默认更改为指针

如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)

如何在 Rails 中将我的数据库从 SQLite 更改为 MYSQL

如何在TheSchwartz中将数据库从MySQL更改为Oracle

如何在 Windows 10 中将 Jupyter Notebook 的默认浏览器更改为 Microsoft Edge?