ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql – 转换数据库模式的最佳解决方案是什么?

2019-08-07 02:16:25  阅读:182  来源: 互联网

标签:mysql innodb schema myisam foreign-key


我实际上想要摆脱数据库中现有的约束,我知道听起来很疯狂,但我们正在将我们的应用程序升级到一个新的框架,它依赖于外键约束名称,而且我们正在做一堆清理和重命名字段,桌子等

我想一个更好的方法来构建问题是给定一个需要经历以下内容的现有数据库:

>使用在框架内工作的名称创建所有全新的外键约束
>表将被重命名和/或大规模重组,包括重命名当前属于现有外键关系的字段

完成此任务的最佳方法是什么?

到目前为止我的解决方案是:

>创建一个转换脚本(在php中),它将为数据库中的所有约束运行DROP FOREIGN KEY.这导致在尝试ALTER TABLES并添加新约束时,在该过程的后续步骤中发生奇怪的错误.此外,删除了约束,但如果我尝试DROP键本身,我会收到错误.
>不使用PHP和PDO,而是使用直接SQL编写转换脚本,并使用CURSOR来删除约束.
>不是自己删除约束,而是将表转换为MyIsam并将DROP键转换回Innodb,然后继续进行其余的转换过程.
>从头开始创建一个全新的模式,然后将数据从旧模式移动到新模式.

我想知道哪种方法最有效?或者,如果有更好的方法这样做?

更新(此信息是在聊天室中请求的,所以我想我会在这里添加它):

>当前架构有68个表,新架构将更接近55.
>最大的表只有超过800,000行,一般来说,我们的表只有数万个.
>整个数据库大约240 MB,但大部分都在一个存储大文本字段的表中.我们将在转换过程中压缩它.

解决方法:

当一步一步的清理变得比干净的平板和迁移方法更多的工作时,有一点.系统可用性和迁移时间可能会影响处理较大数量时的决策,但在此大小,而不是问题.

这里的关键因素是:

>重命名外键约束以适应新的应用程序框架.
>重构大部分现有表.
>数据量低.

在这种情况下,我很想设计一个适合您现在需要的模型的新模式,并创建必要的脚本来跨数据迁移(您的选项4).

标签:mysql,innodb,schema,myisam,foreign-key
来源: https://codeday.me/bug/20190807/1605603.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有