2011-08-23 56 views
0

我有一個應用程序,在我的本地機器上運行MySQL。在Rails中有一個我定義爲布爾值的字段,它在MySQL中表示爲0或1。如何將MySQL中的布爾型字段遷移到Heroku中的PostgreSQL?

我現在正在嘗試遷移到使用PostgreSQL的Heroku。將代碼和數據庫推送到Heroku後,該應用程序無法運行。

有錯誤信息。

ActiveRecord::StatementInvalid (PGError: ERROR: operator does not exist: boolean = integer 

我該如何解決?

謝謝大家。

+0

請發佈您的schema.rb – Gazler

回答

3

這是因爲MySQL使用TinyInt(1)來存儲布爾屬性,因爲PostgreSQL具有本機布爾類型。

這是更好地使用遷移工具像

https://github.com/maxlapshin/mysql2postgres

這需要處理這些問題的關心。

設置本地postgres數據庫。從MySQL遷移到本地Postgres數據庫。然後使用水龍頭從本地postgres數據庫推送到Heroku。

此外,還要確保你沒有使用「Y」或「N」中的任何位置代碼,因爲這些值是針對MySQL的

UPDATE:你做任何上述前,看看這個http://devcenter.heroku.com/articles/database#common_issues_migrating_to_postgresql

+0

感謝您的快速響應。有沒有我不需要在本地機器上安裝另一個數據庫的方法? –

+0

請檢查是否使用內插條件表單(如鏈接中所討論的)可解決您的問題 – dexter

+0

MySQL自5.0.3以來已經擁有了真實位字段,MyISAM以及5.05以及innodb和其他一些引擎。 –