jay*_*del 5 ruby-on-rails rails-migrations ruby-on-rails-4.2
我发现很多我们的列limit: 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发行说明中的这个说明:
PostgreSQL和SQLite适配器不再在字符串列上添加255个字符的默认限制.
以及对相关Rails Pull Request 14579的评论:
db/schema.rb用于精确重新创建数据库.所有字符串列都在4.2之前添加,隐式限制为255.此时没有必要将限制转储到db/schema.rb,因为它是默认值.现在我们已将默认值更改为无限制.我们必须转储这些限制才能重新创建数据库.
这个问题不是新的默认问题,而是旧问题的反映.
要解决此问题,我建议运行迁移,从相关字段中删除限制,然后schema.rb从数据库重新创建.这应该导致新的一致状态.
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |