【发布时间】:2015-05-15 05:43:51
【问题描述】:
我对正在发生的事情有一个假设……想问问社区。p>
我最近的迁移是根据 Heroku 上 PG 的要求将电话号码从 integer 更改为 bigint。我的架构文件已更新以反映最新的迁移(如日期匹配),仍然显示:
t.integer "phone"
因此,当我运行rake db:reset 时,电话仍然是integer,这对于 Heroku 中的 PG 来说是个问题,因为那时我会收到错误,因为integer 不支持我需要的值。
这可能只是反映了我的开发数据库是 sqlite 使用integer 作为每个文件的bigint 吗? http://www.sqlite.org/datatype3
我问这个只是为了确保数据库的其余部分是对齐的......我并不偏执于以某种方式错过了一堆其他迁移。
另一件事是,如果我的假设是正确的,那么我如何强制 bigint 作为架构中的定义以避免将来发生类似的事情?唯一的办法是让本地数据库也PG吗?
谢谢!
【问题讨论】:
-
我认为将电话存储为字符串而不是 bigint 会更好
-
无论如何,您确实应该在开发、测试和生产中使用相同的数据库。不要期望 ActiveRecord 提供很多有用的可移植性。
标签: ruby-on-rails database sqlite postgresql heroku