在information_schema.COLUMNS上运行Update语句

时间:2015-05-26 18:45:42

标签: mysql information-schema

在为我正在管理的数据库创建架构时,之前的dba做出了许多虚假的设计决策。基本上,数据库中具有默认值的每个列也不可为空。几乎任何ORM都会造成严重破坏。我希望能够在information_schema数据库的COLUMNS表上运行更新语句,并且如果列具有默认值,则将nullable设置为YES,但当然,我无法访问该表,根也没有。这甚至是可能的,还是我需要手动更改数千列?

1 个答案:

答案 0 :(得分:0)

如果没有root权限或没有其他方法来修改列(除了手动触摸每列之外),您可以执行以下操作:

  1. 获取数据库的备份
  2. 将备份还原到您完全访问
  3. 的新数据库
  4. 对新恢复的数据库进行更改
  5. 删除原始
  6. 将已还原的数据库重命名为原始数据库名称
  7. 我会首先在您的开发环境中执行此操作几次,并在生产环境中执行此操作之前对此更改感到非常自信。

    此外,根据数据库的大小,这可能是在数据库上执行的相当昂贵的操作。如果运行需要数小时或数天,那么这可能不是一个可行的解决方案。

    祝你好运。