2011-03-20 74 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