我已經結束了9遷移有效複製。 (我認爲這是因爲我安裝/更新了Gems和/或在我的開發和生產機器上進行了遷移,但在這個階段我並不完全確定。)標記Rails遷移的遷移
我搬出了一組重複的9在生產服務器上的軌道目錄,但現在,我想db:migrate
生產才能運行另一遷移,我越來越:
$ bundle exec rake db:migrate RAILS_ENV=production
[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.checkout" is no longer supported
== CreatePages: migrating ====================================================
-- create_table(:pages)
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'pages' already exists: CREATE TABLE `pages` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `title` varchar(255), `body` text, `slug` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
這是因爲遷移,有效地已經運行。
我寧願避免做db:migrate:down
和db:migrate:up
爲每一個 - 我認爲這將意味着在生產數據庫中的數據丟失。 (一對夫婦在這種情況下,在施普雷靜態頁面。)
有沒有一種方法,我可以告訴這個安裝的Rails忘記所有優秀的遷移,有效地標記所有未遷移的呢?
謝謝 - 這聽起來像它應該做的伎倆。我會試一試。我認爲我處在這種情況下,因爲涉及的9次遷移在我的dev和prod機器上都創建了一次(因此,實際上相同的遷移有兩次遷移,每次遷移都有自己的時間戳)。前9名運行,但我從我的開發機器拉了另外9個,因此對錶格的投訴已經存在。我仍然在處理安裝和更新Gems的部署方面。 – 2012-03-07 17:09:48
嗯,爲什麼你有重複的遷移是相同的,但具有不同的時間戳?遷移背後的想法是,你有一套每個人都使用的遷移(即對數據庫結構的更改)。然後數據庫有一個表來跟蹤已經運行的遷移,因此它們不會在每個環境(dev/production)上運行兩次。 – 2012-03-08 14:51:37
確實。我認爲這可能是因爲我之前在兩臺機器上都安裝了Gems(包括它們相關的遷移),卻沒有意識到這一點。我需要排除工作流程。 – 2012-03-08 18:08:54