【发布时间】:2015-05-26 18:45:42
【问题描述】:
在为我现在管理的数据库创建架构时,以前的 dba 做出了许多虚假的设计决策。基本上数据库中具有默认值的每一列也不能为空。这对几乎任何 ORM 都会造成严重破坏。我希望能够在 information_schema 数据库的 COLUMNS 表上运行更新语句,如果该列具有默认值,则将 nullable 设置为 YES,但自然我无权访问该表,root 也无权访问。这甚至可能吗,还是我需要手动更改数千列?
【问题讨论】:
在为我现在管理的数据库创建架构时,以前的 dba 做出了许多虚假的设计决策。基本上数据库中具有默认值的每一列也不能为空。这对几乎任何 ORM 都会造成严重破坏。我希望能够在 information_schema 数据库的 COLUMNS 表上运行更新语句,如果该列具有默认值,则将 nullable 设置为 YES,但自然我无权访问该表,root 也无权访问。这甚至可能吗,还是我需要手动更改数千列?
【问题讨论】:
如果没有 root 权限或没有其他方式来修改列(除了手动触摸每一列),您可以执行以下操作:
我会先在您的开发环境中执行几次,然后在生产环境中执行之前对更改充满信心。
此外,根据您的数据库的大小,这可能是对数据库执行相当昂贵的操作。如果运行需要数小时或数天,那么这可能不是一个可行的解决方案。
祝你好运。
【讨论】: