加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 升级到Rails 4.2.6:rake db:将插入列限制迁

发布时间:2020-12-17 03:18:48 所属栏目:百科 来源:网络整理
导读:我发现很多我们的列没有限制:迁移中的xxx突然限制应用于列,而不是数据库本身,而是我们的db / schema.rb文件.当我们在任何环境中进行迁移时,这并不可怕.它变得麻烦的地方是我们设置新数据库时 – 它们不再匹配我们在各种prod / staging / qa环境中的数据库.
我发现很多我们的列没有限制:迁移中的xxx突然限制应用于列,而不是数据库本身,而是我们的db / schema.rb文件.当我们在任何环境中进行迁移时,这并不可怕.它变得麻烦的地方是我们设置新数据库时 – 它们不再匹配我们在各种prod / staging / qa环境中的数据库.

我需要找到一种不会发生这种情况的方法.

随着时间的推移我们添加迁移,我们最终不得不做一个非常复杂和繁琐的git add -p db / schema.rb随着时间的推移,我对我们的db / schema.rb文件与之匹配失去信心任何版本的现实.

作为一个数据点,如果我运行rake db:migrate而没有新的迁移,db / schema.rb会被重建,并且有一个非常大的差异.

解决方法

根据 Rails 4.2 Release Notes中的这个说明:

The PostgreSQL and SQLite adapters no longer add a default limit of 255 characters on string columns.

以及对相关Rails Pull Request 14579的评论:

The db/schema.rb is used to exactly recreate your database. All your string columns were added before 4.2 with an implicit limit of 255. At that time it was not necessary to dump the limit to db/schema.rb because it was the default. Now that we’ve changed the default to no limit. We must dump these limits to recreate the database.

这个问题不是新的默认问题,而是旧问题的反映.

要解决此问题,我建议运行一个迁移,它将从相关字段中删除限制,然后从数据库重新创建schema.rb.这应该导致新的一致状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读