SQL:将所有没有默认值的列的默认值设置为 NULL
Posted
技术标签:
【中文标题】SQL:将所有没有默认值的列的默认值设置为 NULL【英文标题】:SQL: Set default value to NULL for all columns without default value 【发布时间】:2019-08-17 21:27:45 【问题描述】:我使用的虚拟主机已为数据库启用了 StrictMode。我所有的 php 脚本现在都停止工作了,因为它们报告我没有为某些列定义默认值。
由于我在很多表中有很多列,有没有办法将所有列设置为“默认值 = 无”和“默认值 = NULL”? 这样就不会再报错了。
当然,如果有其他(更好的)方法,我可以。
我尝试在网上寻找,但找不到适合这种情况的任何东西。
【问题讨论】:
none
不是我知道的 mysql 中的任何特殊值。您能否添加示例数据来解释您在此处尝试执行的操作?
【参考方案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以上是关于SQL:将所有没有默认值的列的默认值设置为 NULL的主要内容,如果未能解决你的问题,请参考以下文章