从 4.2 升级到 Rails 5.2 后,任何迁移都会抛出:
ActiveRecord::ConcurrentMigrationError: 无法运行迁移,因为另一个迁移进程当前正在运行。
数据库适配器是mysql2
最初我认为这是因为我在开发环境中导入了现有生产数据库中的一些陈旧数据。 但同样的问题也发生在干净创建的数据库上。
为了克服这个问题(因为我确实需要在其他一些问题上取得进展),我必须在实际的 Rails 代码中禁用咨询锁定检查。
最佳答案
经过几个小时的尝试确定“锁定”发生的位置,甚至从头开始创建一个 Rails 应用程序,结果发现罪魁祸首是 database.yml 文件中的“cast: false”行。一旦注释掉,我的 Rails 世界就恢复了和平,迁移再次开始工作。
开发: 适配器:mysql2 数据库: 数据库 用户名: 用户 密码:passwd 主机:本地主机 # 类型转换:假
具有讽刺意味的是,我什至不记得两年前的代码中“cast: false”是如何结束的。我依稀记得我把它放在那里是有目的的。尽管如此,没有它,所有测试都可以正常运行,并且到目前为止,实际应用程序行为中也没有其他症状。
我希望这对将来升级到 5.2 的人有所帮助。
关于ruby-on-rails - ActiveRecord::ConcurrentMigrationError:使用 mysql2 和 Rails 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198577/