迁移失败:PG :: ProtocolViolation Rails
我刚刚更新到rails4并意识到我的db角色和数据库不知何故没有设置。
所以我删除了数据库并重新创建了app_development数据库和角色。
现在我正在尝试运行rake db:migrate并且它失败并出现以下错误:
== DeviseCreateUsers: migrating ============================================== -- create_table(:users) -> 0.0081s -- add_index(:users, :email, {:unique=>true}) -> 0.0031s -- add_index(:users, :reset_password_token, {:unique=>true}) -> 0.0030s == DeviseCreateUsers: migrated (0.0144s) ===================================== rake aborted! An error has occurred, this and all later migrations canceled: PG::ProtocolViolation: ERROR: bind message supplies 1 parameters, but prepared statement "a1" requires 0 : INSERT INTO "schema_migrations" ("version") VALUES ('20130815235601') Tasks: TOP => db:migrate
我尝试手动为不同的表运行迁移,并为每个表提供相同的迁移。
这是一个抱怨的示例迁移文件:
class DeviseCreateUsers false, :default => "" t.string :encrypted_password, :null => false, :default => "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable t.integer :sign_in_count, :default => 0 t.datetime :current_sign_in_at t.datetime :last_sign_in_at t.string :current_sign_in_ip t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at ## Token authenticatable # t.string :authentication_token t.timestamps end add_index :users, :email, :unique => true add_index :users, :reset_password_token, :unique => true # add_index :users, :confirmation_token, :unique => true # add_index :users, :unlock_token, :unique => true # add_index :users, :authentication_token, :unique => true end end
我认为一种方法是删除迁移并重新创建它。
但我不确定这样做的确切步骤。
任何人都可以帮助我完成迁移运行的确切步骤。 我不介意放弃db等,因为项目是开发阶段,并且我需要担心的prod数据/架构不多
谢谢。 Rails 4.0 PG 9.3.0
Update1:在schema_mgrations中看不到任何行:
select * from schema_migrations; version --------- (0 rows)
Update2:手动插入相同的值工作正常!
INSERT INTO "schema_migrations" ("version") VALUES ('20130815235601'); INSERT 0 1 select * from schema_migrations version ---------------- 20130815235601
(1排)
更新3
我手动为不同的表运行迁移,并且每个表都失败,所以它不是任何特定迁移的问题。
我也试图恢复到Rails 3.2.14并且仍然面临同样的问题。
感到迷失在这里,并坚持4-5天吧!!