我遇到了一個非常奇怪的問題,其中Rails不會在我的計算機上執行遷移。我在OS X 10.11.6上使用Rails 4.2.5,Ruby 2.3.1p112和Postgres 9.5.3。未運行遷移的Rails
數據庫在Heroku和另一臺Mac上使用相同版本的所有內容創建/遷移並正常運行。
如果我從Heroku或其他機器導入數據庫,即使運行rails s
時,即使我使用的是相同的源版本,我也會遇到掛起的遷移錯誤。
運行db:schema
告訴我:
You have 23 pending migrations:
20160627035230 DeviseCreateUsers
20160627035442 CreatePages
20160627055031 AddHeroToPages
20160627061237 AddAdministratorToUser
20160627061943 AddNameToUser
20160628042547 CreateSchools
20160628042702 CreateLicenses
20160628042841 JoinUsersAndSchools
20160628043323 AddJoinCodeToSchools
20160630012028 AddExpiryToLicenses
20160630024743 CreatePurchases
20160630043846 AddOmniauthToUsers
20160704003626 CreateMyIndustries
20160704010403 CreateMyCareers
20160704013913 CreateMyQuestions
20160704074916 AlterMyQuestionsDrop
20160704075947 AlterMyQuestionsChange
20160705071702 CreateUserAttributes
20160710235339 CreateAccessabilities
20160711000000 AddToAccessabilities
20160711044815 CreateMedia
20160711045327 AddLocaleToMedium
20160814010549 CreateInvoices
Run `rake db:migrate` to update your database then try again.
運行遷移,然後告訴我:
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment
** Invoke db:load_config
** Execute db:schema:dump
ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
清單僅PSQL表顯示schema_migrations:
20:09 $ rails db
psql (9.5.3)
Type "help" for help.
mytalents_development=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+----------------
public | schema_migrations | table | aidancornelius
(1 row)
mytalents_development=#
我也似乎得到奇怪的錯誤db:migrate:up
20:11 $ rake db:migrate:up
rake aborted!
ActiveRecord::UnknownMigrationVersionError:
No migration with version number 0
/usr/local/lib/ruby/gems/2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:939:in `run'
/usr/local/lib/ruby/gems/2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:834:in `run'
/usr/local/lib/ruby/gems/2.3.0/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:82:in `block (3 levels) in <top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:migrate:up
(See full trace by running task with --trace)
有沒有人有任何關於可能會發生什麼的見解? Rails 4和Rails 5中的其他項目都可以在這臺機器上運行,但這個不會。
在此先感謝您的任何建議!
' rake db:migrate:up'需要一個'version'數字,就像你的情況一樣,你可以這樣做'rake db:migrate:up VERSION = 20160627035230' – Deep