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?

On Jan 21, 2008 11:26 AM, Chilung T. [email protected]
wrote:

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.


Rick DeNatale

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

On Jan 21, 2008 8:26 AM, Chilung T. [email protected]
wrote:

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?

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

HTH!

Hassan S. ------------------------ [email protected]

Rick Denatale wrote:

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

Thanks Rick for your detailed guidance.

I did follow the steps you indicated.

I used command “rake db:migrate” to create a schema.rb file under db
directory successfully without any error.

Inside config/database.yml file I set

QUOTE
development:
adapter: mysql
encoding: utf8
database: music_library_development
username: root
password: xxxx
host: localhost
UNQUOTE

I created an album.rb file under under models directory by using the
command “ruby script/generate model Album”.
I created an admin_controller.rb file under controllers directory by
using the command “ruby script/generate controller Admin”. Inside the
admin_controller.rb file, I only added a line of “scaffold :album” and
saved the file.
I started the server by “ruby script/server” command.
But when I went the Firefox browser and entered
http://localhost:3000/admin, it gave me “500 Internal Server Error”.
What did I miss in these steps for my Windows XP system?

The scaffold method has been deprecated in Rails 2.0.

On Jan 22, 2008 8:11 AM, Chilung T. [email protected]
wrote:

development:
I created an admin_controller.rb file under controllers directory by


Ryan B.

Feel free to add me to MSN and/or GTalk as this email.

It was changed for 2.0.2

You must specify that you want to use mysql:

rails myApp -d mysql

On Jan 21, 8:33 pm, “Hassan S.” [email protected]
wrote:

Hassan S. ------------------------ [email protected]
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

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

On Jan 27, 7:08 pm, Jimmy P. [email protected]

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

Peace,
Phillip

On 1/27/08, Phillip K. [email protected] 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


Rick DeNatale

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

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 T. wrote:

I did follow the steps you indicated.

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

thank a lot!!

the nth

Rick Denatale wrote in post #621001:

On Jan 21, 2008 11:26 AM, Chilung T. [email protected]
wrote:

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.

For Rails 3, you also need to modify the ‘Gemfile’ in your Ror project
folder

change this line
gem ‘sqlite3-ruby’, :require => ‘sqlite3’
to
gem ‘mysql2’

Otherwise, just remove the whole project folder and recreate your
project from scratch with the -d mysql switch
e.g.
rails new testproject -d mysql

Good luck.

installing bundler and adding mysql to gemfile totally works !