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

动机

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

问题

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

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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
Epona

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

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

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

2年前 评论
xiaopi

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

2年前 评论
sanders

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

2年前 评论
sanders

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

2年前 评论

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

2年前 评论

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