Forum: Ruby on Rails How do I switch sqlite3 to mysql on RoR

89c28af2ab7ee5a0190ff91678319a96?d=identicon&s=25 Chilung Tan (chilung)
on 2008-01-21 17:26
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?
8f6f95c4bd64d5f10dfddfdcd03c19d6?d=identicon&s=25 Rick Denatale (rdenatale)
on 2008-01-21 19:10
(Received via mailing list)
On Jan 21, 2008 11:26 AM, Chilung Tan <rails-mailing-list@andreas-s.net>
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/
Bee69cfed999cd13e3bff73d472a39ee?d=identicon&s=25 Hassan Schroeder (Guest)
on 2008-01-21 20:34
(Received via mailing list)
On Jan 21, 2008 8:26 AM, Chilung Tan <rails-mailing-list@andreas-s.net>
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 Schroeder ------------------------ hassan.schroeder@gmail.com
89c28af2ab7ee5a0190ff91678319a96?d=identicon&s=25 Chilung Tan (chilung)
on 2008-01-21 22:41
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?
9a2a53db8e9b4476038c94a64b32833f?d=identicon&s=25 Ryan Bigg (ryan-bigg)
on 2008-01-21 23:34
(Received via mailing list)
The scaffold method has been deprecated in Rails 2.0.

On Jan 22, 2008 8:11 AM, Chilung Tan <rails-mailing-list@andreas-s.net>
wrote:

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


--
Ryan Bigg
http://www.frozenplague.net
Feel free to add me to MSN and/or GTalk as this email.
9c5b3feb5e8435067567c7c299af3fd1?d=identicon&s=25 grz01@spray.se (Guest)
on 2008-01-27 18:38
(Received via mailing list)
On Jan 21, 8:33 pm, "Hassan Schroeder" <hassan.schroe...@gmail.com>
wrote:
> Hassan Schroeder ------------------------ hassan.schroe...@gmail.com
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
8dcd9ef896c3736d1fc67d4723863e0d?d=identicon&s=25 Jimmy Palmer (jimmypalmer)
on 2008-01-27 19:08
It was changed for 2.0.2

You must specify that you want to use mysql:

rails myApp -d mysql
E3ba60e3dcb813f8abcd7732350e74cf?d=identicon&s=25 Phillip Koebbe (pkoebbe)
on 2008-01-27 19:19
(Received via mailing list)
SQLite was made the default in 2.0.  They must have just missed the
change in the documentation.

Peace,
Phillip
9c5b3feb5e8435067567c7c299af3fd1?d=identicon&s=25 grz01@spray.se (Guest)
on 2008-01-27 19:29
(Received via mailing list)
yes - and they forgot to update the helptext then?  (rails --help)
/grz01


On Jan 27, 7:08 pm, Jimmy Palmer <rails-mailing-l...@andreas-s.net>
8f6f95c4bd64d5f10dfddfdcd03c19d6?d=identicon&s=25 Rick Denatale (rdenatale)
on 2008-01-28 02:15
(Received via mailing list)
On 1/27/08, Phillip Koebbe <phillipkoebbe@gmail.com> 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
http://weblog.rubyonrails.org/2007/12/17/rails-2-0...

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/
E3ba60e3dcb813f8abcd7732350e74cf?d=identicon&s=25 Phillip Koebbe (pkoebbe)
on 2008-01-28 02:16
(Received via mailing list)
I had intended on typing 2.0.x.  I guess I'm not perfect either.

Peace,
Phillip
D9ac02e371af6a48bdb4cd5253f5711d?d=identicon&s=25 Ask Me (1001times)
on 2008-06-23 16:35
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! :-)
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>
B8651d9ff856b919af9aa68777a56c6b?d=identicon&s=25 Akshat P. (akshat_p)
on 2010-11-27 21:37
installing bundler and adding mysql to gemfile totally works !
http://techleap.blogspot.com/2010/11/not-able-to-c...
C22bf82a5d5f9cc9211a0389bdce2ab4?d=identicon&s=25 Paul Kaibo2.com (paul_w75)
on 2011-06-10 17:40
Rick Denatale wrote in post #621001:
> On Jan 21, 2008 11:26 AM, Chilung Tan <rails-mailing-list@andreas-s.net>
> 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.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.