Reputation: 3261
I cannot start my rails server. The error shows:
$ rails server
/usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2a.rb:8:in `require': libmysqlclient.so.18: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so (LoadError)
from /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2.rb:8:in `<top (required)>'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
from /home/marslo/Study/Codes/Ruby/RailsBegin/config/application.rb:7:in `<top (required)>'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
BUT! mysql2.so can be fuond !!!:
$ ls -al /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so
-rwxr-xr-x 1 root root 131K Oct 7 00:31 /usr/local/lib/ruby/gems/1.9.1/gems/mysql2-0.3.13/lib/mysql2/mysql2.so
I'v installed the mysql from source code. And it was installed at:
$ whereis mysql
mysql: /usr/local/mysql
I tried install mysql2 by gem with --with-mysql-config
, everything just works fine:
$ sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions. This could take a while...
Successfully installed mysql2-0.3.13
1 gem installed
Installing ri documentation for mysql2-0.3.13...
Installing RDoc documentation for mysql2-0.3.13...
Here my database.yml:
development:
adapter: mysql2
encoding: utf8
database: RailsBegin_development
pool: 5
username: root
password: passwd
host: localhost
socket: /tmp/mysql.sock
Here my databases:
mysql> SHOW DATABASES;
+------------------------+
| Database |
+------------------------+
| information_schema |
| RailsBegin_development |
| mysql |
| performance_schema |
| test |
+------------------------+
5 rows in set (0.00 sec)
Here my bundle install:
$ bundle install
Using rake (10.1.0)
Using i18n (0.6.5)
Using minitest (4.7.5)
Using multi_json (1.8.1)
Using atomic (1.1.14)
Using thread_safe (0.1.3)
Using tzinfo (0.3.37)
Using activesupport (4.0.0)
Using builder (3.1.4)
Using erubis (2.7.0)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.0.0)
Using mime-types (1.25)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Using actionmailer (4.0.0)
Using activemodel (4.0.0)
Using activerecord-deprecated_finders (1.0.3)
Using arel (4.0.0)
Using activerecord (4.0.0)
Using coffee-script-source (1.6.3)
Using execjs (2.0.2)
Using coffee-script (2.2.0)
Using thor (0.18.1)
Using railties (4.0.0)
Using coffee-rails (4.0.0)
Using hike (1.2.3)
Using jbuilder (1.5.1)
Using jquery-rails (3.0.4)
Using json (1.8.0)
Using mysql2 (0.3.13)
Using bundler (1.3.5)
Using tilt (1.4.1)
Using sprockets (2.10.0)
Using sprockets-rails (2.0.0)
Using rails (4.0.0)
Using rdoc (3.12.2)
Using sass (3.2.12)
Using sass-rails (4.0.0)
Using sdoc (0.3.20)
Using turbolinks (1.3.0)
Using uglifier (2.2.1)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
I don't know what's wrong with it. Is everyone can help me? Thanks in advance!!
============
I've uninstalled the mysql2 and reinstalled as 0.3.11:
$ sudo gem install mysql2 -v 0.3.11 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mysql-lib=/usr/local/mysql/lib --with-mysql-bin=/usr/local/mysql/bin
Fetching: mysql2-0.3.11.gem (100%)
Building native extensions. This could take a while...
Successfully installed mysql2-0.3.11
1 gem installed
Installing ri documentation for mysql2-0.3.11...
Installing RDoc documentation for mysql2-0.3.11...
And update Gemfile:
gem 'mysql2', '~> 0.3.11'
And bundle install again, but 0.3.13 still be installed!:
$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.1.0)
Using i18n (0.6.5)
Using minitest (4.7.5)
Using multi_json (1.8.1)
Using atomic (1.1.14)
Using thread_safe (0.1.3)
Using tzinfo (0.3.37)
Using activesupport (4.0.0)
Using builder (3.1.4)
Using erubis (2.7.0)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.0.0)
Using mime-types (1.25)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Using actionmailer (4.0.0)
Using activemodel (4.0.0)
Using activerecord-deprecated_finders (1.0.3)
Using arel (4.0.0)
Using activerecord (4.0.0)
Using bundler (1.3.5)
Using coffee-script-source (1.6.3)
Using execjs (2.0.2)
Using coffee-script (2.2.0)
Using thor (0.18.1)
Using railties (4.0.0)
Using coffee-rails (4.0.0)
Using hike (1.2.3)
Using jbuilder (1.5.1)
Using jquery-rails (3.0.4)
Using json (1.8.0)
Installing mysql2 (0.3.13)
Using tilt (1.4.1)
Using sprockets (2.10.0)
Using sprockets-rails (2.0.0)
Using rails (4.0.0)
Using rdoc (3.12.2)
Using sass (3.2.12)
Using sass-rails (4.0.0)
Using sdoc (0.3.20)
Using turbolinks (1.3.0)
Using uglifier (2.2.1)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
here gem list:
$ gem list | grep mysql2
mysql2 (0.3.13, 0.3.11)
By the way, the owner of mysql (installed by source code) is mysql:
$ ls -al
total 160K
-rw-r--r-- 1 mysql mysql 18K Sep 10 15:38 COPYING
-rw-r--r-- 1 mysql mysql 2.5K Sep 10 15:38 README
-rw-r--r-- 1 mysql mysql 87K Sep 10 15:38 INSTALL-BINARY
drwxr-xr-x 2 mysql mysql 4.0K Oct 1 23:51 docs/
drwxr-xr-x 3 mysql mysql 4.0K Oct 1 23:51 include/
drwxr-xr-x 3 mysql mysql 4.0K Oct 1 23:51 lib/
drwxr-xr-x 10 mysql mysql 4.0K Oct 1 23:52 mysql-test/
drwxr-xr-x 28 mysql mysql 4.0K Oct 1 23:52 share/
drwxr-xr-x 2 mysql mysql 4.0K Oct 1 23:52 scripts/
drwxr-xr-x 4 mysql mysql 4.0K Oct 1 23:52 sql-bench/
drwxr-xr-x 4 mysql mysql 4.0K Oct 1 23:52 man/
drwxr-xr-x 3 mysql mysql 4.0K Oct 1 23:52 support-files/
-rw-r--r-- 1 mysql mysql 943 Oct 1 23:55 my.cnf
drwxr-xr-x 2 mysql mysql 4.0K Oct 1 23:57 bin/
drwxr-xr-x 6 mysql mysql 4.0K Oct 7 01:04 data/
However, the owner of ruby is root.
Is that because of the permission problem?
====================
Install mysql2 version: 0.3.11, with --platform=ruby:
$ sudo gem uninstall mysql2
$ sudo gem install mysql2 -v 0.3.11 --platform=ruby -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mysql-lib=/usr/local/mysql/lib --with-mysql-bin=/usr/local/mysql/bin
$ rm -rf Gemfile.lock
$ bundle install
mysql variables can be found by:
$ mysqladmin variables
And, install NodeJS:
$ sudo apt-get install nodejs
And, it will works!!
$ rails server
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-10-07 21:08:06] INFO WEBrick 1.3.1
[2013-10-07 21:08:06] INFO ruby 1.9.3 (2013-06-27) [i686-linux]
[2013-10-07 21:08:06] INFO WEBrick::HTTPServer#start: pid=3676 port=3000
Do not forgot start mysql server:
$ sudo service mysql start
====================
NodeJS installation for CentOS:
$ sudo yum groupinstall 'Development Tools'
$ mkdir nodjs && cd $_
$ wget http://nodejs.org/dist/node-latest.tar.gz
--2013-10-12 16:01:53-- http://nodejs.org/dist/node-latest.tar.gz
Resolving nodejs.org... 165.225.133.150
Connecting to nodejs.org|165.225.133.150|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13633041 (13M) [application/octet-stream]
Saving to: “node-latest.tar.gz”
100%[============================================================================>] 13,633,041 513K/s in 36s
2013-10-12 16:02:31 (375 KB/s) - “node-latest.tar.gz” saved [13633041/13633041]
$ tar xzf node-latest.tar.gz
$ cd node-v0.10.20/
$ ./configure
$ make
$ sudo make install
===================
Upvotes: 2
Views: 7805
Reputation: 10122
I ran into this problem after a MySQL update. In the end the steps required to fix it were:
gem uninstall mysql2
apt-get install libmysqlclient-dev
bundle install
...at this point the updated mysql2 gem installed and rails was able to start without a problem.
Upvotes: 1
Reputation: 1
Do the below steps to install mysql2 in rails -
download mysql-connector-c-6.1.3-win32.zip from http://dev.mysql.com/downloads
upzip to 'C:\mysql-connector'
gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:\mysql-connector"'
copy 'libmysql.dll' from 'C:\mysql-connector\lib' to 'C:\Ruby193\bin' directory
add gem 'mysql2' in Genfile.
delete 'Genfile.lock'
bundle install
rails server.
Enjoy !!!
Upvotes: 0
Reputation: 6460
Add this to GemFile gem 'mysql2', '~> 0.3.11'
and try Bundling Again.
Upvotes: 3