rails server(4.0.0)无法启动 – 错误:LoadError:8 lib / mysql2.rb:8:in`require’:libmysqlclient.so.18

我无法启动我的rails服务器。 错误显示:

$ 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 `' 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 `' 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 ' 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 `' from bin/rails:4:in `require' from bin/rails:4:in `' 

但! mysql2.so可以说是!!!

  $ 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 

从源代码安装了mysql。 它安装在:

 $ whereis mysql mysql: /usr/local/mysql 

我尝试使用--with-mysql-config通过gem安装mysql2 ,一切正常:

 $ 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... 

这是我的database.yml

 development: adapter: mysql2 encoding: utf8 database: RailsBegin_development pool: 5 username: root password: passwd host: localhost socket: /tmp/mysql.sock 

我的数据库:

 mysql> SHOW DATABASES; +------------------------+ | Database | +------------------------+ | information_schema | | RailsBegin_development | | mysql | | performance_schema | | test | +------------------------+ 5 rows in set (0.00 sec) 

我的捆绑安装在这里:

 $ 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. 

我不知道它有什么问题。 每个人都可以帮助我吗? 提前致谢!!

============

更新1

我卸载了mysql2并重新安装为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... 

并更新Gemfile

 gem 'mysql2', '~> 0.3.11' 

并再次捆绑安装但仍然安装0.3.13!

 $ 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. 

gem清单

 $ gem list | grep mysql2 mysql2 (0.3.13, 0.3.11) 

顺便说一句,mysql的所有者(由源代码安装)是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/ 

但是,ruby的所有者是root

那是因为许可问题吗?

====================

更新2

安装mysql2版本: 0.3.11 ,使用–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变量可以通过以下方式找到:

 $ mysqladmin variables 

并且,安装NodeJS

 $ sudo apt-get install nodejs 

而且,它会工作!!

 $ 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 

别忘了启动mysql服务器:

 $ sudo service mysql start 

====================

更新3

CentOS的NodeJS安装:

 $ 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 

===================

注意

  • 这与权限问题无关
  • 如果Gemfile中有任何更新,请先运行bundle install之前删除Gemfile.lock

将此添加到GemFile gem’mysql2 gem 'mysql2', '~> 0.3.11'并尝试再次捆绑。

我在MySQL更新后遇到了这个问题。 最后,修复它所需的步骤是:

 gem uninstall mysql2 apt-get install libmysqlclient-dev bundle install 

…此时安装的更新的mysql2 gem和rails能够毫无问题地启动。

我的系统: – Windows 7 64位,MySQL 5.6,Ruby 1.9.3,Rails 4.0.4

执行以下步骤在rails中安装mysql2 –

  1. 从http://dev.mysql.com/downloads下载mysql-connector-c-6.1.3-win32.zip

  2. upzip到’C:\ mysql-connector’

  3. gem install mysql2 –platform = ruby​​ – ‘ – with-mysql-dir =“C:\ mysql-connector”’

  4. 将’libmysql.dll’从’C:\ mysql-connector \ lib’复制到’C:\ Ruby193 \ bin’目录

  5. 在Genfile中添加gem’mysql2’。

  6. 删除’Genfile.lock’

  7. 捆绑安装

  8. rails服务器。

请享用 !!!