2012-05-15 141 views
0

我似乎已經達到了一個顛簸,在這裏和其他foruns搜索,但沒有。我正在運行rails 3.2.3和ruby 1.9.3,並且希望在heroku上部署我的應用程序。Ruby on Rails - Heroku部署問題

我創建了雪松,雖然我可以git push heroku master我得到一個完整的500服務器錯誤。 我懷疑是因爲我的數據庫不存在。但是,我似乎無法在那裏得到它。 我已經運行:

heroku run rake db:create - >這給出了約不贊成一些警告,然後dkhgclqccm already exists

所以它已經存在?所以讓我們進行遷移:

heroku run rake db:migrate 但是這個輸出:

<deprecation errors> 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

PG::Error: ERROR: relation "hphotos" does not exist 
: ALTER TABLE "hphotos" ADD COLUMN "description" character varying(255) 

Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

這個特定的遷移:

class AddDescriptionToHphotos < ActiveRecord::Migration 
    def change 
    add_column :hphotos, :description, :string 
    end 
end 

這似乎對我很好,不知道爲什麼它給我這個錯誤:/

最後一兩件事,即使這個工作移民,我的數據庫是空的,我seeds.rb不具有所有爲數據庫的必要數據即所以我想要推開洞DB。

heroku db:push   
! Taps Load Error: cannot load such file -- sqlite3 
! You may need to install or update the taps gem to use db commands. 
! On most systems this will be: 
! 
! sudo gem install taps 

這是爲什麼顯示? 我安裝了「Heroku的」創業板和「水龍頭」的寶石和我在寶石文件中得到這個:

group :development, :test do 
    gem 'mysql2' 
end 
group :production do 
    gem 'pg' 
end 

而且,當我運行heroku run rake db:version,它表明:當前版本:20120508130957 這實際上是5個遷移總之我currrent版本,但我不能爲我展示談到上述錯誤進行遷移...

在此先感謝

+0

難道我修復不適合你? – Abram

+0

顯然,在創建表的遷移之前調用了此遷移。不知道那是怎麼發生的。解決方案是手動刪除遷移,然後創建一個新的堆棧雪松應用程序。然後移民,種子,一切都很好。 – Silver

+0

這幾乎就是我指出的那樣「看起來表格並沒有被遠程創建,而是在嘗試修改它。」請欣賞請打勾。 – Abram

回答

0

我認爲你需要仔細檢查你的遷移,看看是否你實際上有一個文件,該文件說:

def up 
    create_table :hphotos do |t| 
     [...] 
    end 

看來這個表沒有遠程創建,你正試圖修改它。

1

Heroku的帶有建立一個數據庫(這就是爲什麼db:create沒工作)。你有沒有試過heroku run rake db:schema:load?這應該把你的schema.rb文件加載到數據庫中。這是你想設置每次做比db:migrate的一個更好的方法一個新的DB

編輯:

你對水龍頭的最後一個問題,它看起來像它試圖在本地使用的SQLite,但你只有你的Gemfile中的pg。你可能在config/database.yml adapter: sqlite。因此,無論您需要在本地使用postgres並將該適配器更改爲postgres,或者轉到更簡單的路由並在本地使用sqlite並將其添加到:development組。

注意的Heroku只使用Postgres的,所以我不會建議關閉MySQL的,因爲有一些不一致的一些語法和發展你如何做一對夫婦的兩個平臺之間的事情。再次,如果您只使用ANSI兼容查詢或僅使用Rails的方法來激活查詢,那麼您無論如何都應該可以。

+0

我沒有使用sqlite gem。我設法通過遷移然後播種來重新創建數據庫。我的回答是關於這個問題的評論。儘管感謝您的意見 – Silver

0

的解決方案是增加不僅水龍頭寶石也sqlite3寶石到Gemfile中,進入:development組。如果您在開發中使用sqlite3,那麼添加taps寶石就足夠了。

但因爲你正在使用mysql2你的發展,來解決這個問題,你必須將這兩個。

group :development do 
    gem 'taps' 
    gem 'sqlite3' 
end