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

动机

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

问题

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

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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6
Epona

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

2年前 评论
sanders (楼主) 2年前

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

2年前 评论
xiaopi

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

2年前 评论
sanders

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

2年前 评论
sanders

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

2年前 评论

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

2年前 评论

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