【发布时间】:2016-09-01 12:44:29
【问题描述】:
我有一个一直在本地开发并部署到 heroku 的 rails 应用程序。我有很多需要播种的数据,这些数据在本地运行良好,还有一个我不太在意的小问题。基本上我有很多表涵盖:
- 功能,
- 插件,
- 预算,
- 项目类型
- 工业
等等。
当我创建/重置本地数据库并运行 rake db:seed 时,它会完美地播种到每个数据库。
但是,作为一个 WIP,我不断添加新表并运行种子 rake db:seed,并注意到它应该将所有种子数据加倍(因为我从未清除数据),它实际上只是在插件和功能表上复制了此信息。其他表没有变化。我什么都没想,直到我开始尝试运行 heroku run rake db:seed 来填充我的生产数据库并注意到在日志中它也只填充了 Addon 和 Feature 表,并跳过了其余部分。
我的一些种子文件的摘录(我用 ... 缩写,因为它们非常重复但都一样):
#Populate the features table
Feature.destroy_all
Feature.create(id: 1, name: 'Contact form')
Feature.create(id: 2, name: 'Blog')
Feature.create(id: 3, name: 'Mailing list signup')
...
...
#Populate the addons table
Addon.destroy_all
Addon.create(id: 1, name: 'Domain registration')
Addon.create(id: 2, name: 'Hosting')
Addon.create(id: 3, name: 'Create content')
...
...
#Populating the industries table
Industry.destroy_all
Industry.create(id: 1, name: 'Accounting')
Industry.create(id: 2, name: 'Airlines')
Industry.create(id: 3, name: 'Alternative Medicine')
...
...
# Populating the budgets table
Budget.destroy_all
Budget.create(id: 1, name: 'Micro', minimum: 250, maximum: 1000)
Budget.create(id: 2, name: 'Simple', minimum: 1000, maximum: 2500)
...
...
我注意到,当我尝试使用 heroku run rake db:seed 填充 heroku 数据库时,所有数据似乎都“回滚”了。以下是控制台的摘录:
首先我运行heroku run rake db:migrate
D, [2016-09-01T12:24:31.463009 #3] DEBUG -- : (1.8ms) SELECT pg_try_advisory_lock(4467995963834188590);
D, [2016-09-01T12:24:31.476939 #3] DEBUG -- : ActiveRecord::SchemaMigration Load (1.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
D, [2016-09-01T12:24:31.507280 #3] DEBUG -- : ActiveRecord::InternalMetadata Load (1.8ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", :environment], ["LIMIT", 1]]
D, [2016-09-01T12:24:31.518500 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:24:31.522494 #3] DEBUG -- : (1.7ms) COMMIT
D, [2016-09-01T12:24:31.524504 #3] DEBUG -- : (1.8ms) SELECT pg_advisory_unlock(4467995963834188590)
然后我运行 rake heroku run rake db:seed
对于不起作用的表,它似乎这样做:
D, [2016-09-01T12:27:28.229540 #3] DEBUG -- : ActiveRecord::SchemaMigration Load (2.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
D, [2016-09-01T12:27:28.261528 #3] DEBUG -- : Budget Load (2.3ms) SELECT "budgets".* FROM "budgets"
D, [2016-09-01T12:27:28.293954 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.320090 #3] DEBUG -- : (1.9ms) ROLLBACK
D, [2016-09-01T12:27:28.322421 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.325418 #3] DEBUG -- : (1.8ms) ROLLBACK
D, [2016-09-01T12:27:28.327617 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.331031 #3] DEBUG -- : (1.8ms) ROLLBACK
D, [2016-09-01T12:27:28.333423 #3] DEBUG -- : (1.8ms) BEGIN
D, [2016-09-01T12:27:28.338379 #3] DEBUG -- : (2.5ms) ROLLBACK
D, [2016-09-01T12:27:28.340601 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.344061 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.346208 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.349342 #3] DEBUG -- : (1.8ms) ROLLBACK
D, [2016-09-01T12:27:28.353205 #3] DEBUG -- : (3.4ms) BEGIN
D, [2016-09-01T12:27:28.358254 #3] DEBUG -- : (2.5ms) ROLLBACK
D, [2016-09-01T12:27:28.360392 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.363406 #3] DEBUG -- : (1.8ms) ROLLBACK
D, [2016-09-01T12:27:28.365488 #3] DEBUG -- : (1.6ms) BEGIN
D, [2016-09-01T12:27:28.367862 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.369869 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.372657 #3] DEBUG -- : (1.8ms) ROLLBACK
D, [2016-09-01T12:27:28.378093 #3] DEBUG -- : Industry Load (2.1ms) SELECT "industries".* FROM "industries"
D, [2016-09-01T12:27:28.393455 #3] DEBUG -- : (1.8ms) BEGIN
D, [2016-09-01T12:27:28.409125 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.411280 #3] DEBUG -- : (1.6ms) BEGIN
D, [2016-09-01T12:27:28.414223 #3] DEBUG -- : (1.6ms) ROLLBACK
D, [2016-09-01T12:27:28.416244 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.419335 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.421511 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.425412 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.427570 #3] DEBUG -- : (1.7ms) BEGIN
D, [2016-09-01T12:27:28.431136 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.433536 #3] DEBUG -- : (2.0ms) BEGIN
D, [2016-09-01T12:27:28.438208 #3] DEBUG -- : (1.7ms) ROLLBACK
D, [2016-09-01T12:27:28.440437 #3] DEBUG -- : (1.7ms) BEGIN
然后当它通过功能和插件时,它似乎工作正常:
D, [2016-09-01T12:27:29.506570 #3] DEBUG -- : SQL (1.9ms) INSERT INTO "features" ("id", "name", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["id", 1], ["name", "Contact form"], ["created_at", 2016-09-01 12:27:29 UTC], ["updated_at", 2016-09-01 12:27:29 UTC]]
D, [2016-09-01T12:27:29.509515 #3] DEBUG -- : (2.5ms) COMMIT
D, [2016-09-01T12:27:29.512944 #3] DEBUG -- : (2.2ms) BEGIN
D, [2016-09-01T12:27:29.516551 #3] DEBUG -- : SQL (1.9ms) INSERT INTO "features" ("id", "name", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["id", 2], ["name", "Blog"], ["created_at", 2016-09-01 12:27:29 UTC], ["updated_at", 2016-09-01 12:27:29 UTC]]
D, [2016-09-01T12:27:29.519489 #3] DEBUG -- : (2.5ms) COMMIT
D, [2016-09-01T12:27:29.522216 #3] DEBUG -- : (2.5ms) BEGIN
D, [2016-09-01T12:27:29.526125 #3] DEBUG -- : SQL (1.9ms) INSERT INTO "features" ("id", "name", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["id", 3], ["name", "Mailing list signup"], ["created_at", 2016-09-01 12:27:29 UTC], ["updated_at", 2016-09-01 12:27:29 UTC]]
我确实注意到,在这些表中,插件和功能都与其他表具有 has_and_belongs_to_many 关联,而其余不工作的表与其他一些表具有 belongs_to 关联。不知道这是否只是巧合?感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails postgresql heroku seed