【发布时间】:2016-12-28 23:35:49
【问题描述】:
我有大约 12 个数据库,每个数据库有 50 个表,其中大多数有 30 多列; db 在严格模式下运行为 OFF,但现在我们必须将 db 迁移到 cleardb 服务,默认情况下严格模式为 ON。 所有具有“非空”约束的表,插入已停止工作,只是因为未传递默认值;而在严格模式为 OFF 的情况下,如果未提供该值,则 MYSQL 将假定列数据类型的默认值。 是否有一个脚本可以用来获取有关所有表的所有列的元数据并生成一个脚本来更改具有此类列的所有表以将默认值更改为“Null”
【问题讨论】:
-
索取任何场外资源在 SO 上都是题外话。
-
我不要求任何场外资源@Shadow 我正在寻找有关如何做到这一点的指导,而不是我坐在这里玩弄我的拇指,而有人帮助我。
-
此外,在定义为非空的字段上将默认字段值设置为空可能不是最好的主意。您的问题意味着您正在寻找一个完整的现有解决方案。 (“有脚本吗……”)。您在解决问题方面没有表现出任何努力,因此您的问题不太可能以目前的形式出现。
-
这是对的,但有时必须使用给定的东西;设计这个数据库的人可能没有考虑过严格模式。设置 Not Null 并且不提供任何值听起来已经很疯狂了。
-
你没有明白我的意思:如果一个字段有
not null限制,然后你将其默认值设置为 null,那么这 2 个设置将相互矛盾。