【问题标题】:Run Update statement on information_schema.COLUMNS在 information_schema.COLUMNS 上运行更新语句
【发布时间】:2015-05-26 18:45:42
【问题描述】:

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

【问题讨论】:

    标签: mysql information-schema


    【解决方案1】:

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

    1. 获取数据库备份
    2. 将备份恢复到您拥有完全访问权限的新数据库
    3. 对新恢复的数据库进行更改
    4. 删除原文
    5. 将恢复的数据库重命名为原始数据库名称

    我会先在您的开发环境中执行几次,然后在生产环境中执行之前对更改充满信心。

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

    祝你好运。

    【讨论】:

    • 但我确实有 root 权限。我对我的用户具有授予选项的完全访问权限,并且从服务器上的控制台我可以获得对数据库的 root 访问权限,但我无法授予自己对信息架构数据库的权限或修改它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多