How do I switch sqlite3 to mysql on RoR

I am a newbie and just started to learn Ruby on Rails. I have installed both Ruby, Rails, and MySQL server on my Windows XP system. Whenever I run a Rails application, it always gives me an error stating " MissingSourceFile in SayController#index, no such file to load -- sqlite3" and "This error occurred while loading the following files: sqlite3". I don't want to use sqlite3 database. What I want is to use MySQL database by default. How do I make it to connect MySQL database by default instead of looking for sqlite3?

The key is in the config/database.yml file.

The default file should look something like this: # SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development:   adapter: sqlite3   database: db/development.sqlite3   timeout: 5000

# Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. # Do not set this db to the same as development or production. test:   adapter: sqlite3   database: db/test.sqlite3   timeout: 5000

production:   adapter: sqlite3   database: db/production.sqlite3   timeout: 5000

This gives the database configuration for each of the three environments development, test and production.

For MySql you want something like

development:   adapter: mysql   encoding: utf8   database: temp_development   username: root   password:   socket: /tmp/mysql.sock

# Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. # Do not set this db to the same as development or production. test:   adapter: mysql   encoding: utf8   database: temp_test   username: root   password:   socket: /tmp/mysql.sock

production:   adapter: mysql   encoding: utf8   database: temp_production   username: root   password:   socket: /tmp/mysql.sock

This is for an OSX system, some of the details like socket: might be different on Windows.

For a new Rails project you can override the default by using the -d mysql option on the rails command. The way I got the above database.yml file was by entering

$rails -d mysql temp

and then copying the text from temp/config/database.yml

If you are using an IDE or other means to generate the Rails app on Windows rather than the command line, you'll have to find someone with more Rails on Windows experience than I have to help.

Edit `#{RAILS_ROOT}/config/database.yml` appropriately

HTH!

The scaffold method has been deprecated in Rails 2.0.

Isnt this actually a little error in Rails? I run Rails v 2.0.2.

When I type

  rails --help

it says that mysql is the default for --database but still the database.yml will be setup for sqlite when creating a new application. Doesnt seem right to me?

/ grz01

SQLite was made the default in 2.0. They must have just missed the
change in the documentation.

Peace, Phillip

yes - and they forgot to update the helptext then? (rails --help) /grz01

The default actually changed in 2.0.2

I had intended on typing 2.0.x. I guess I'm not perfect either.

Peace, Phillip

Rick Denatale wrote:

The key is in the config/database.yml file. ........ The default file should look something like this: # SQLite version 3.x

...

This gives the database configuration for each of the three environments development, test and production.

For MySql you want something like

...

This is for an OSX system, some of the details like socket: might be different on Windows.

For a new Rails project you can override the default by using the -d mysql option on the rails command. The way I got the above database.yml file was by entering

$rails -d mysql temp

that was fine, i got the problem in a snap, and even if i'm a newbie i'm appreciating so much ruby, and most of all ruby-people like you! :slight_smile: i never find such a friendly and effective community! really!

Chilung Tan wrote: ...

I did follow the steps you indicated.

so did i, and worked smoothly, on linux ubuntu!

thank a lot!!

<i>the nth</i>

Rick Denatale wrote:

This is for an OSX system, some of the details like socket: might be different on Windows.

For a new Rails project you can override the default by using the -d mysql option on the rails command. The way I got the above database.yml file was by entering

$rails -d mysql temp

-- Rick DeNatale

My blog on Ruby http://talklikeaduck.denhaven2.com/

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems installing the MySQL gem on their "OSX" systems, we should clarify a few other fine points. OSX is not OSX is not OSX in the case of installing this component.

Many other people are finding it seemingly impossible to install the MySQL gem "on OSX." What they're doing is abiding by instructions for earlier versions of OSX, which do not apply to the pre-bundled RoR installation on Leopard.

In other words, folks are reading to install this gem with:

gem install mysql

This won't work in recent versions of OSX such as Mac OS X 10.6.2 (10C540) -- which happens to be my version. You find so many posts indicating this is the way to install (without caveat), that you can easily be trapped into thinking this is supposed to work -- while it doesn't.

Your post helped me resolve this. I first thought I had to have the gem installed before building a project; but finally after yet another failed install, I did try to execute your line:

rails myApp -d mysql

Hmmm. I got a project (somewhat surprisingly). I thought then that maybe the XCode environment didn't bother to check dependencies (which probably still is the case)... and while I was ruminating on that, there were the instructions, staring me in the face!

:slight_smile:

Funny, right in the database.yml file it says, that on Mac OSX *LEOPARD*, the gem install instruction is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

Now, that's one line between the quotes (best perhaps to copy it form your .yml file and paste it into your console)... and bingo... the impossible install went perfectly.

Note that I DID find this instruction in another post, but that several permutations of the necessary instruction failed because the user-agent hacked the expression.

My advice to others who are suffering the same difficulties then installing the mysql gem to LEOPARD is, just (run your "rails myApp -d mysql" command and...) read the comment in the top of the .yml file and copy it into your console.

Rick Denatale wrote:

This is for an OSX system, some of the details like socket: might be different on Windows.

For a new Rails project you can override the default by using the -d mysql option on the rails command. The way I got the above database.yml file was by entering

$rails -d mysql temp

-- Rick DeNatale

My blog on Ruby http://talklikeaduck.denhaven2.com/

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems installing the MySQL gem on their "OSX" systems, we should clarify a few other fine points. OSX is not OSX is not OSX in the case of installing this component.

Many other people are finding it seemingly impossible to install the MySQL gem "on OSX." What they're doing is abiding by instructions for earlier versions of OSX, which do not apply to the pre-bundled RoR installation on Leopard.

In other words, folks are reading to install this gem with:

gem install mysql

This won't work in recent versions of OSX such as Mac OS X 10.6.2 (10C540) -- which happens to be my version. You find so many posts indicating this is the way to install (without caveat), that you can easily be trapped into thinking this is supposed to work -- while it doesn't.

Your post helped me resolve this. I first thought I had to have the gem installed before building a project; but finally after yet another failed install, I did try to execute your line:

rails myApp -d mysql

Hmmm. I got a project (somewhat surprisingly). I thought then that maybe the XCode environment didn't bother to check dependencies (which probably still is the case)... and while I was ruminating on that, there were the instructions, staring me in the face!

:slight_smile:

Funny, right in the database.yml file it says, that on Mac OSX *LEOPARD*, the gem install instruction is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

Now, that's one line between the quotes (best perhaps to copy it form your .yml file and paste it into your console)... and bingo... the impossible install went perfectly.

Note that I DID find this instruction in another post, but that several permutations of the necessary instruction failed because the user-agent hacked the expression.

My advice to others who are suffering the same difficulties then installing the mysql gem to LEOPARD is, just (run your "rails myApp -d mysql" command and...) read the comment in the top of the .yml file and copy it into your console.

Rick Denatale wrote:

SQLite was made the default in 2.0. They must have just missed the change in the documentation.

The default actually changed in 2.0.2 Ruby on Rails — Rails 2.0.2: Some new defaults and a few fixes

-- Rick DeNatale

My blog on Ruby http://talklikeaduck.denhaven2.com/

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems INSTALLING the MySQL gem on their "OSX" systems, we should clarify that Leopard "OSX" systems are an exception. If a person runs your console instruction:

rails myApp -d mysql

And if they then examine the comments of the database.yml file, they'll find that the console instruction they have to execute ON LEOPARD is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

MANY POSTS elsewhere are instructing instead, that to install the gem, the console instruction is:

gem install mysql

NOT SO FOR LEOPARD.

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems INSTALLING the MySQL gem on their "OSX" systems, we should clarify that Leopard "OSX" systems are an exception. If a person runs your console instruction:

rails myApp -d mysql

And if they then examine the comments of the database.yml file, they'll find that the console instruction they have to execute ON LEOPARD is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

MANY POSTS elsewhere are instructing instead, that to install the gem, the console instruction is:

gem install mysql

NOT SO FOR LEOPARD.

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems INSTALLING the MySQL gem on their "OSX" systems, we should clarify that Leopard "OSX" systems are an exception. If a person runs your console instruction:

rails myApp -d mysql

And if they then examine the comments of the database.yml file, they'll find that the console instruction they have to execute ON LEOPARD is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

MANY POSTS elsewhere are instructing instead, that to install the gem, the console instruction is:

gem install mysql

NOT SO FOR LEOPARD.

Funny, right in the database.yml file it says, that on Mac OSX *LEOPARD*, the gem install instruction is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

Two things: OS X 10.6 is "Snow Leopard", OS X 10.5 is "Leopard"

And on Snow Leopard your ARCHFLAGS will depend if you are running 32 or 64 bit version of MySQL.

Regards, Rimantas

Rick,

Huge thanks for your post.

There's a lot of erroneous information which has been extremely misleading on this issue. For the benefit of others who are having FURTHER problems INSTALLING the MySQL gem on their "OSX" systems, it should be made clear that Leopard "OSX" systems are an exception to the instruction to install the mysql gem with "gem install mysql". If a person runs your console instruction:

rails myApp -d mysql

They can examine the comments of the database.yml file, in which they'll find that the console instruction they have to run to execute mysql gem installation ON LEOPARD is:

"sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config"

Note that forum wrapping can corrupt posts of this instruction; so, best to copy it right out of the comments in the top of the database.yml flle you'll get by running rails myApp -d mysql.

installing bundler and adding mysql to gemfile totally works !