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

最佳答案

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


获取数据库的备份
将备份还原到您具有完全访问权限的新数据库
对新还原的数据库进行更改
删除原件
将还原的数据库重命名为原始数据库名称


我将首先在您的开发环境中进行几次此操作,并且对在生产环境中进行更改之前的更改感到非常有信心。

另外,根据数据库的大小,在数据库上执行此操作可能会非常昂贵。如果要花费数小时或数天才能运行,那么这可能不是可行的解决方案。

祝好运。

10-08 00:16