2011-03-20 71 views
1

我安裝Ruby on Rails的從sqlite3的轉換爲mysql2寶石

  • 的Ubuntu 10.10
  • 的Rails 3
  • 寶石= sqlite3的和sqlite3的,紅寶石
  • 寶石= mysql2

現在我創建了一個名爲mytestapp的應用程序,使用

rails new mytestapp 

像往常一樣使用rails 3,它默認使用sqlite3數據庫。現在我想更改mytestapp的數據庫,以便它使用MySql數據庫。

我在這裏所做的更改

  • 的database.yml
  • 的Gemfile - 我加寶石 'mysql2'和刪除寶石 'sqlite3的'

我的新的database.yml看着像這樣的東西

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: mytestapp_development 
    pool: 5 
    username: mytestapp 
    password: hacked 
    socket: /var/run/mysqld/mysqld.sock 

現在我轉到本地主機:3000並點擊有關應用程序的開發環境 我收到以下錯誤

的ActiveRecord :: ConnectionNotEstablished

MySQL用戶mytestapp具有數據庫適當的權限。

逸岸時,我用下面

rails new anotherapp -d mysql 

創建一個新的Rails應用它的偉大工程。這裏可能會丟失什麼。

回答

2

編輯完Gemfile後你跑過bundle install嗎?

如果你沒有,那麼嘗試運行下面的命令來看看有什麼是你的手工編輯應用程序之間的區別你與-d mysql的創建新:

diff /path/to/hand-edited-app /path/to/rails-created-mysql-app 
+0

確定diff命令顯示我的Gemfile .lock也有sqlite作爲它的依賴。那麼我應該手動更換還是使用一些命令。也許捆綁安裝。我不知道。 – Nikhil 2011-03-20 13:55:03

+1

您通過運行'bundle install'來更改Gemfile.lock。 – 2011-03-21 01:33:27