2014-01-13 91 views
0

你好,我是新來的鐵軌。 我正在使用現有的postgres數據庫。我想爲所有表格創建CRUD。 我已經開始與: 軌摹支架firstTableName爲什麼rails會告訴我運行rake db:migrate?

然後我開始導軌:導軌 小號

,當我瀏覽到localhost:3000/firstTableName,軌提供了以下錯誤: 遷移掛起;運行'bin/rake db:migrate RAILS_ENV = development'來解決這個問題。

我認爲'rake db:migrate'僅用於設置數據庫。我的數據庫已經建立。如果我運行'rake db:migrate',那麼我得到一個firstTableName已經存在的錯誤。 請幫我理解如何讓鐵軌開心。 謝謝。

+0

'耙分貝:migrate'不僅是設置你的數據庫,他們也可用於跟蹤和同步更改分貝。聽起來就像你進入了一個奇怪的狀態與你的分貝和遷移,我們需要更多的信息來幫助你。 – Dty

回答

1

錯誤是因爲您已經有了表firstTableName已經存在,並且您已經做過腳手架,它將爲您創建模型,控制器和視圖,因此它還爲firstTableName創建了遷移。

如果您已經到位遷移嘗試跳過遷移,同時搭棚

rails g scaffold firstTableName --skip-migration

0

您的數據庫應該有一個名爲schema_migrations的表格,只有一列version。然後,您應該手動將所有移植版本寫入該表。 遷移放置在project_root/db/migrate/中,並且文件名中的文字與版本遷移相同。

0

當您運行遷移軌跟蹤這些由DB每個遷移匹配/遷移文件夾中schema_migrations表的條目包括已在版本列中爲該環境運行的所有遷移的時間戳。

原因是允許您逐步遷移。

早期版本的rails有一個強烈的理念,即有一個向下的遷移以及回溯。但是,現在這已經成爲一種選擇。

您的抱怨是因爲它無法創建schema_migrations表。我的建議是允許它通過運行rake db:在新鮮數據庫上遷移。

如果此實例的表中有數據,請在另一個數據庫上運行該數據,然後在版本表中進行復制。

http://guides.rubyonrails.org/migrations.html

相關問題