Unable to use mysql with rails

Hi All,           I successfully installed rails(3.0.10) and ruby version 1.9.2 and mysql version 5.5.8 on my windows7 machine. I am using mysisgit also. i am able to start any application with sqlite3 which comes default for rails. But problem is when i want use mysql. i am using

"rails new appname -d mysql" for using mysql $ rails new appname -d mysql       create       create README       create Rakefile       create config.ru       create .gitignore       create Gemfile       create app       create app/controllers/application_controller.rb       create app/helpers/application_helper.rb       create app/mailers       create app/models       create app/views/layouts/application.html.erb       create config       create config/routes.rb       create config/application.rb       create config/environment.rb       create config/environments       create config/environments/development.rb       create config/environments/production.rb       create config/environments/test.rb       create config/initializers       create config/initializers/backtrace_silencers.rb       create config/initializers/inflections.rb       create config/initializers/mime_types.rb       create config/initializers/secret_token.rb       create config/initializers/session_store.rb       create config/locales       create config/locales/en.yml       create config/boot.rb       create config/database.yml       create db       create db/seeds.rb       create doc       create doc/README_FOR_APP       create lib       create lib/tasks       create lib/tasks/.gitkeep       create log       create log/server.log       create log/production.log       create log/development.log       create log/test.log       create public       create public/404.html       create public/422.html       create public/500.html       create public/favicon.ico       create public/index.html       create public/robots.txt       create public/images       create public/images/rails.png       create public/stylesheets       create public/stylesheets/.gitkeep       create public/javascripts       create public/javascripts/application.js       create public/javascripts/controls.js       create public/javascripts/dragdrop.js       create public/javascripts/effects.js       create public/javascripts/prototype.js       create public/javascripts/rails.js       create script       create script/rails       create test       create test/fixtures       create test/functional       create test/integration       create test/performance/browsing_test.rb       create test/test_helper.rb       create test/unit       create tmp       create tmp/sessions       create tmp/sockets       create tmp/cache       create tmp/pids       create vendor/plugins       create vendor/plugins/.gitkeep

Then "cd appname" and Then "bundle install"

$ bundle install Fetching source index for http://rubygems.org/ Using rake (0.9.2) Using abstract (1.0.0) Using activesupport (3.0.10) Using builder (2.1.2) Using i18n (0.5.0) Using activemodel (3.0.10) Using erubis (2.6.6) Using rack (1.2.3) Using rack-mount (0.6.14) Using rack-test (0.5.7) Using tzinfo (0.3.29) Using actionpack (3.0.10) Using mime-types (1.16) Using polyglot (0.3.2) Using treetop (1.4.10) Using mail (2.2.19) Using actionmailer (3.0.10) Using arel (2.0.10) Using activerecord (3.0.10) Using activeresource (3.0.10) Using bundler (1.0.18) Installing mysql2 (0.2.13) with native extensions c:/Ruby192/lib/ruby/ 1.9.1/ruby gems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

c:/Ruby192/bin/ruby.exe extconf.rb checking for rb_thread_blocking_region()... yes checking for main() in -llibmysql... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.

Provided configuration options:         --with-opt-dir         --without-opt-dir         --with-opt-include         --without-opt-include=${opt-dir}/include         --with-opt-lib         --without-opt-lib=${opt-dir}/lib         --with-make-prog         --without-make-prog         --srcdir=.         --curdir         --ruby=c:/Ruby192/bin/ruby         --with-mysql-dir         --without-mysql-dir         --with-mysql-include         --without-mysql-include=${mysql-dir}/include         --with-mysql-lib         --without-mysql-lib=${mysql-dir}/lib         --with-libmysqllib         --without-libmysqllib

Gem files will remain installed in c:/Ruby192/lib/ruby/gems/1.9.1/gems/ mysql2-0. 2.13 for inspection. Results logged to c:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.13/ ext/mysql2/g em_make.out         from c:/Ruby192/lib/ruby/1.9.1/rubygems/installer.rb:486:in `block in bu ild_extensions'         from c:/Ruby192/lib/ruby/1.9.1/rubygems/installer.rb:446:in `each'         from c:/Ruby192/lib/ruby/1.9.1/rubygems/installer.rb:446:in `build_exten sions'         from c:/Ruby192/lib/ruby/1.9.1/rubygems/installer.rb:198:in `install'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/sour ce.rb:101:in `block in install'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/ruby gems_integration.rb:78:in `preserve_paths'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/sour ce.rb:91:in `install'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/inst aller.rb:58:in `block (2 levels) in run'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/ruby gems_integration.rb:93:in `with_build_args'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/inst aller.rb:57:in `block in run'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/inst aller.rb:49:in `run'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/inst aller.rb:8:in `install'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/cli. rb:220:in `install'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/vend or/thor/task.rb:22:in `run'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/vend or/thor/invocation.rb:118:in `invoke_task'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/vend or/thor.rb:263:in `dispatch'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/lib/ bundler/vend or/thor/base.rb:386:in `start'         from c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.18/bin/ bundle:13:in `<top (required)>'         from c:/Ruby192/bin/bundle:19:in `load'         from c:/Ruby192/bin/bundle:19:in `<main>'

and then "rails s"

$ rails s ←[31mCould not find gem 'mysql2 (~> 0.2.11, runtime)' in any of the gem sources listed in your Gemfile.←[0m ←[33mRun `bundle install` to install missing gems.←[0m

and one more thing i noticed here is i am not able to find the version of rails when i am in the root, see this

$ rails -v ←[31mCould not find gem 'mysql2 (~> 0.2.11, runtime)' in any of the gem sources listed in your Gemfile.←[0m ←[33mRun `bundle install` to install missing gems.←[0m

But i am able find it when outside the application $ rails -v Rails 3.0.10

so thats the error i am getting. i tried different methods by googling, but nothing worked out for me. I am still in my initial days and any help would be appreciated.

Problem is that mysql2 gem is not installed… Install mysql2 gem with source as path to mysql in order top install it properly

Tried that but no luck...

Hi All, I successfully installed rails(3.0.10) and ruby version 1.9.2 and mysql version 5.5.8 on my windows7 machine. I am using mysisgit also. i am able to start any application with sqlite3 which comes default for rails. But problem is when i want use mysql. i am using

"rails new appname -d mysql" for using mysql $ rails new appname -d mysql

Short answer:

Install either mysql or mysql2 gem following these instructions: http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

Long answer:

Rails is defaulting to mysql2 and attempting to compile latest version.

Gem compilation will attempt to find libmysql and headers to link to, but these are not available unless you supply the --with-mysql-dir option during gem installation.

Since Bundler doesn't support that, you should install the gem prior doing the bundle install, which will solve Bundler attempting to download and install the gem again.

The provided tutorial will work with any version of MySQL installed since it will not use any file from it. Instead, it will use the standalone Connector component, which gives you freedom to update MySQL later.

and one more thing i noticed here is i am not able to find the version of rails when i am in the root, see this

$ rails -v ←[31mCould not find gem 'mysql2 (~> 0.2.11, runtime)' in any of the gem sources listed in your Gemfile.←[0m ←[33mRun `bundle install` to install missing gems.←[0m

But i am able find it when outside the application $ rails -v Rails 3.0.10

That is because you're inside an application folder and "rails" will attempt to run in the context of your application (so rails generate, rails server and others) work.

Hope this helps.

Cheers,

Hi,

  I believe that my problem will be solved form now!!

I have created a rails projects as "rails new Tickets" I need to make my app. mysql compatible. I did the changes in gemfile

source 'http://rubygems.org'

gem "rails", "3.0.0.rc"

# Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'mysql2', '< 0.3'

but when i tire bundle install, i got the error as

hey

do one thing use rails version 3.0.9( which is stable) and change in gem file as mysql “0.2.6” rails “3.0.9” then start bundle install then start the server.

thanks ravinder reddy

Hi Luis, Thanks for your time. But still i am not able to do..getting panic with rails on windows..

Anybody using rails 3.0.10 and ruby1.9.2 with mysql 5.5.8 on 32 bit windows7?

Easiest way to get it to work would be to use mysql gem instead of mysql2 gem.

Open up your Gemfile and replace

gem ‘mysql2’, ‘~> 0.2.11’

with

gem ‘mysql’

And open up your database.yml fine and change adapter from mysql2 to mysql

Chirag http://sumeruonrails.com

Yes that successfully starts the server. But when i see my application environment

RuntimeError

Please install the mysql2 adapter: `gem install activerecord-mysql2- adapter` (no such file to load -- active_record/connection_adapters/ mysql2_adapter) Rails.root: c:/rails/appname

Application Trace | Framework Trace | Full Trace Request

Parameters:

None Show session dump

Show env dump

Response

Headers:

None Getting started Here’s how to get rolling:

Use rails generate to create your models and controllers To see all available options, run it without parameters.

Set up a default route and remove or rename this file Routes are set up in config/routes.rb.

Create your database Run rake db:migrate to create your database. If you're not using SQLite (the default), edit config/database.yml with your username and password.

You have to change your config/database.yml file also.

Open that and replace “mysql2” with “mysql” everywhere.

Chirag http://sumeruonrails.com

yes you are right that made displaying my environment clear but one more issue when i run rake db:migrate is

$ bundle exec rake db:migrate rake aborted! Mysql::Error: query: not connected: SHOW TABLES

Tasks: TOP => db:migrate (See full trace by running task with --trace)

Hi reddy,      I came across this problem several days ago,I'm using windows xp ,Here is my solution.

     1. edit Gemfile => gem 'mysql2', '0.2.6'      2. download mysql-noinstall-5.1.50-win32.zip at http://downloads.mysql.com/archives/mysql-5.1/mysql-noinstall-5.1.50-win32.zip ,unzip      3. gem install mysql2 -v 0.2.6 -- --with-mysql-lib=E:\ROR \mysql-5.1.50-win32\lib --with-mysql-include=E:\ROR\mysql-5.1.50- win32\include (replace the file "E:\ROR\mysql-5.1.50-win32" path with yours)      4. this should work now,try bundle install,generate some model ,and run rake db:migrate to see if it works,make sure your database config is right,like this development:   adapter: mysql2   encoding: utf8   reconnect: false   database: depot_development   pool: 5   username: root   password: root   host: localhost    5.if it still not work ,try this => https://github.com/brianmario/mysql2/issues/8

Hope this helped

yes you are right that made displaying my environment clear but one

more issue when i run rake db:migrate is

$ bundle exec rake db:migrate

rake aborted!

Mysql::Error: query: not connected: SHOW TABLES

Tasks: TOP => db:migrate

(See full trace by running task with --trace)

There are two things you will have to check for this:

  1. Have you configured correct username and password in your config/database.yml file for your development database or not?

  2. Have you created the development database yet or not? Try rake db:create

If those don’t work, then run the with --trace option at the end and paste the result here.

Chirag http://sumeruonrails.com

I configured correct username and password I created the development database appname_development

result of rake db:migrate is as follows $ rake db:migrate (in c:/rails/appname) rake aborted! uninitialized constant Rake::DSL c:/Ruby192/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 8:in `<cla ss:TaskLib>' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 6:in `<mod ule:Rake>' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 3:in `<top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/rdoc-3.9.4/lib/rdoc/task.rb: 37:in `requir e' c:/rails/appname/rails/ruby/1.9.1/gems/rdoc-3.9.4/lib/rdoc/task.rb: 37:in `<top ( required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/tasks/ documenta tion.rake:2:in `require' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/tasks/ documenta tion.rake:2:in `<top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:15:in `load' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:15:in `block in <top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:6:in ` each' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:6:in ` <top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 215:in `require' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 215:in `initialize_tasks' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 139:in `load_tasks' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 77:in `method_missing' c:/rails/appname/Rakefile:7:in `<top (required)>' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `load' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:1991:in `run' c:/Ruby192/bin/rake:31:in `<main>'

Here is rake db:migrate with trace

$ rake db:migrate --trace (in c:/rails/appname) rake aborted! uninitialized constant Rake::DSL c:/Ruby192/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 8:in `<cla ss:TaskLib>' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 6:in `<mod ule:Rake>' c:/rails/appname/rails/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb: 3:in `<top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/rdoc-3.9.4/lib/rdoc/task.rb: 37:in `requir e' c:/rails/appname/rails/ruby/1.9.1/gems/rdoc-3.9.4/lib/rdoc/task.rb: 37:in `<top ( required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/tasks/ documenta tion.rake:2:in `require' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/tasks/ documenta tion.rake:2:in `<top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:15:in `load' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:15:in `block in <top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:6:in ` each' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ tasks.rb:6:in ` <top (required)>' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 215:in `require' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 215:in `initialize_tasks' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 139:in `load_tasks' c:/rails/appname/rails/ruby/1.9.1/gems/railties-3.0.10/lib/rails/ application.rb: 77:in `method_missing' c:/rails/appname/Rakefile:7:in `<top (required)>' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `load' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling' c:/Ruby192/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile' c:/Ruby192/lib/ruby/1.9.1/rake.rb:1991:in `run' c:/Ruby192/bin/rake:31:in `<main>'

Panic you mean a segmentation fault? I'm guessing because you're not proving the real error messages.

Please ensure libmysql.dll from the MySQL Connector/C package is copied into Ruby bin directory (as the instructions of my blog article).

Actually i am copying what ever the error i got and pasting here. i already copied libmysql.dll into ruby bin directory.

It is eating lot of time. I think i should move to linux. Rails on windows sucks.....

Looks like the issue is because you are using wrong version of rake.

Either uninstall rake 0.9.2

or run any rake commands with a “bundle exec” prefix

like this

bundle exec rake db:migrate

bundle exec rake db:create

Chirag http://sumeruonrails.com

Yeah, learn bash, GNOME, apt, install gcc and of course configure RVM, that is way faster than this, sure.

/sarcasm

If you had used RailsInstaller you would have all the things you need to successfully run a Rails project. RubyInstaller is the building block of it.

Yet still, install gems that require compilation and depend on other things, no matter what platform you are they could baffle you.

Install Linux and let us know how it goes.

when i go for bundle exec rake db:migrate

$ bundle exec rake db:migrate rake aborted! Mysql::Error: query: not connected: SHOW TABLES

Tasks: TOP => db:migrate (See full trace by running task with --trace)

i tried it in the first step. This is the error i got. You know some time ago when rails 3.0.3 i successfully did all this. But now i don't know what's changed,i am trying in different ways still no luck. The only reason i am still fighting with is " i love rails"