两个项目使用相同的数据库,如何迁移

动机

目前有个数据统计类的需求,需求将两个 Laravel 框架项目的数据写到相同的库中,同时也用相同的代码将这类数据统一读出进行分析。但除了这个公共的库,两个项目默认的数据库都是独立的。

问题

现在的问题是,如果向这个公共的库中执行迁移,势必会因为一部分表已经存在,导致迁移执行失败。

我能想到的方案就是,在执行迁移文件中,判断表是否存在,判断字段是否存在,判断索引是否存在,如果存在就不再重复创建。

不知道框架本身有没有比较优雅的方案来解决这类问题。请大家不吝赐教。

sanders
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 6
Epona

把所有的迁移文件都写到一个项目里面, 另一个项目不写迁移文件。

3个月前 评论
sanders (楼主) 3个月前

同一个数据库实例上不同的数据库是可以union操作的,这种方式是否满足你的统计需求?

3个月前 评论
xiaopi

迁移是手动控制的啊,只在一个项目中迁移就好。或者两个项目migrations表是同一个啊,只要迁移文件名一样,就不会重复迁移。不过迁移前判断表、字段、索引是否存在还是很有必要的。

3个月前 评论
sanders

跟产品商量了一下,最终放弃了这个方案,毕竟迁移过去后,不同跨库关联的数据会存在更多问题。

3个月前 评论
sanders

因为两边的项目都需要升级各自的数据库结构,所以不能只在一边执行迁移,我能想到的方案是做成初始化命令,命令中判断表是否存在或结构是否需要升级,分离出迁移文件,就可以保证不影响两个项目的正常迁移,又可以在一边初始化这个共用的数据库。

3个月前 评论
mowangjuanzi

如果是相同的表,可以把迁移文件名字给改成一样的。这样就妥了

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!