Có vẻ như xa lạ với tôi, điều đó tạo ra các mô hình, chạy di cư, phá hủy nó, và tạo ra một lần nữa cùng một mô hình báo cáo SQL ngoại lệ:Di chuyển mô hình đường ray sau khi di chuyển
project|master ⇒ rails g model name name
invoke active_record
create db/migrate/20130417185814_create_names.rb
create app/models/name.rb
project|master⚡ ⇒ rake db:migrate
== CreateNames: migrating ====================================================
-- create_table(:names)
-> 0.0020s
== CreateNames: migrated (0.0021s) ===========================================
project|master⚡ ⇒ rails d model name
invoke active_record
remove db/migrate/20130417185814_create_names.rb
remove app/models/name.rb
project|master⚡ ⇒ rake db:migrate
project|master⚡ ⇒ rails g model name test
invoke active_record
create db/migrate/20130417185845_create_names.rb
create app/models/name.rb
project|master⚡ ⇒ rake db:migrate
== CreateNames: migrating ====================================================
-- create_table(:names)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "names" already exists: CREATE TABLE "names" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "test" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) /path/project/db/migrate/20130417185845_create_names.rb:3:in `change'
-- create_table("names", {:force=>true})
-> 0.0100s
-- initialize_schema_migrations_table()
-> 0.0025s
-- assume_migrated_upto_version(20130417185814, ["/path/project/db/migrate"])
-> 0.0010s
You have 1 pending migrations:
20130417185845 CreateNames
Run `rake db:migrate` to update your database then try again.
Có lẽ, tôi làm điều gì sai? Di chuyển có mã để xóa bảng - nó có thể được sử dụng chỉ để khôi phục không?
Giải pháp
Xóa mô hình và cơ sở dữ liệu bảng và tạo ra một cái mới là khá dễ dàng:
- Tạo mô hình:
rails g model user name
- Do di cư:
rake db:migrate
- Thực hiện một cái gì đó, đột nhiên nhớ rằng bạn cần xóa mô hình
- Hoàn nguyên di chuyển cụ thể:
rake db:migrate:down VERSION=20130417185814
, trong đó20130417185814
là id di cư (có thể được nhìn thấy trong rake db: di chuyển: tình trạng) - Remove mô hình:
rails d model user
- Đột nhiên nhớ rằng bạn cần mô hình này, nhưng với các lĩnh vực khác
- Tạo mô hình:
rails g model user email group:references
- di chuyển thành công cơ sở dữ liệu:
rake db:migrate
Nhưng nếu tôi tạo mô hình không phải trong lần di chuyển cuối cùng thì sao? Tôi cần khôi phục tất cả các lần di chuyển sau nó? Có vẻ kỳ lạ. – Drakmail
'rake db: di chuyển: xuống VERSION = 20130417185845' là tôi cần. Cảm ơn :) – Drakmail