【问题标题】:SQL: Set default value to NULL for all columns without default valueSQL:将所有没有默认值的列的默认值设置为 NULL
【发布时间】:2019-08-17 21:27:45
【问题描述】:

我使用的虚拟主机已为数据库启用了 StrictMode。我所有的 php 脚本现在都停止工作了,因为它们报告我没有为某些列定义默认值。

由于我在很多表中有很多列,有没有办法将所有列设置为“默认值 = 无”和“默认值 = NULL”? 这样就不会再报错了。

当然,如果有其他(更好的)方法,我可以。

我尝试在网上寻找,但找不到适合这种情况的任何东西。

【问题讨论】:

  • none 不是我知道的 MySQL 中的任何特殊值。您能否添加示例数据来解释您在此处尝试执行的操作?

标签: mysql sql phpmyadmin mariadb


【解决方案1】:

这里应该适用于导致错误的每个列的一般方法是设置默认值,然后可能进行更新以回填缺少值的记录。

ALTER TABLE yourTable ALTER some_text_column SET DEFAULT 'None';

这是更新:

UPDATE yourTable SET some_text_column = 'None' WHERE some_text_column IS NULL;

您不需要进行此更新,但将旧记录缺失值与新记录的外观保持一致可能是有意义的。

【讨论】:

  • 我想一次性更新所有没有默认值(默认值 = 'None')的列,而不是对每个表的每一列进行一次查询。我需要一个更快的方法。
  • 如果不使用一些动态 SQL,您将无法做到这一点。
  • 您的第二个查询是将列值设置为 null 而不是将其默认值设置为 null
【解决方案2】:

你可以改变列

ALTER TABLE table_name
 MODIFY COLUMN col datatype  DEFAULT null

【讨论】:

  • 其实列可以为NULL,我只要把默认值设置为NULL
猜你喜欢
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 2020-09-01
  • 2013-04-28
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
相关资源
最近更新 更多