2011-12-26 63 views
0

我正在使用mysql在共享主機上部署我的Rails應用程序。然而,在開發過程中,我正在使用一個sqlite數據庫。我的查詢需要在這兩種環境下工作。我早一點問了一下使用CONCAT,關於這兩個數據庫會工作的查詢: Can MySQL concatenate strings with ||使用Rails設置sql_mode

有人告訴我,我應該設置的sql_mode到PIPES_AS_CONCAT或ANSI。現在我的問題是在哪裏以及如何在我的應用程序中設置sql_mode。它可以作爲初始化器完成,以免更改我的通用代碼?

我嘗試使用從這裏的代碼片段:http://gabrito.com/post/configuring-mysql-sql-mode-in-ruby-on-rails,但沒有奏效 - 我猜連接方法已經改變,因爲該帖子是相當古老。

任何幫助,非常感謝。順便說一下,我正在使用rails 3.1.3。

回答

1

主要區別可能是您可能使用的是mysql2適配器 - 請嘗試改寫ActiveRecord::ConnectionAdapters::Mysql2Adapter上的該方法。我個人認爲在開發和生產中使用不同的數據庫會帶來麻煩(除非你正在編寫能夠在許多不同的數據庫上運行的東西)。數據庫之間的差異可能很微妙,例如sqlite3在列類型方面具有相當靈活的視圖 - 您可以非常高興地在聲明爲VARCHAR(255)的列中插入> 255個字符,而mysql將截斷數據。

+0

是的,我決定在開發中也使用mysql。所以我使用concat而不是管道。我會嘗試儘快將類名更改爲Mysql2Adapter,並在正確的情況下標記您的答案:) –