ruby-on-rails – 在初始迁移期间,Rails在schema_migrations表中
发布时间:2020-12-17 02:39:03 所属栏目:百科 来源:网络整理
导读:在新数据库上运行迁移会导致以下错误. rake db:drop; rake db:create:all; rake db:migrate 1 activity-image-additions-!?== CreateSomething: migrating ================================================-- create_table(:somethings) - 0.0042s== Creat
在新数据库上运行迁移会导致以下错误.
>> rake db:drop; rake db:create:all; rake db:migrate 1 activity-image-additions-!? == CreateSomething: migrating ================================================ -- create_table(:somethings) -> 0.0042s == CreateSomething: migrated (0.0043s) ======================================= rake aborted! An error has occurred,this and all later migrations canceled: PG::UndefinedColumn: ERROR: column "id" does not exist LINE 1: ...O "schema_migrations" ("version") VALUES ($1) RETURNING "id" ^ : INSERT INTO "schema_migrations" ("version") VALUES ($1) RETURNING "id 生成的SQL查询不应包含RETURNING“id”,因为schema_migrations表没有id. 如果我在失败后尝试迁移数据库,它会成功: >> rake db:migrate == CreateSomething: migrating ================================================ -- create_table(:somethings) -> 0.0041s == CreateSomething: migrated (0.0042s) ======================================= 我目前在OS X 10.8上运行PostgreSQL 9.2.4,Rails 4.0.0,pg gem 0.16.0. 唯一的迁移: class CreateSomething < ActiveRecord::Migration def change create_table :somethings do |t| t.integer :x t.integer :y end end end 注意:我在其他Rails项目中尝试过这种迁移,但它确实有效.还有别的不对劲,但我不知道从哪里开始. 堆栈跟踪可用on pastebin. 解决方法
设置新数据库时,不应运行rake db:migrate.相反,您应该使用rake db:schema:load.
迁移系统旨在更新架构.在全新安装上,可以更快,更方便地立即加载最新的架构. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |