rails 服务器 (4.0.0) 无法启动 - 错误:LoadError:8 lib/mysql2.rb:8:in `require': libmysqlclient.so.18 [英] rails server (4.0.0) cannot start - Error: LoadError:8 lib/mysql2.rb:8:in `require': libmysqlclient.so.18

查看:23
本文介绍了rails 服务器 (4.0.0) 无法启动 - 错误:LoadError:8 lib/mysql2.rb:8:in `require': libmysqlclient.so.18的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法启动 Rails 服务器.错误显示:

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>'

但是!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.它安装在:


I'v installed the mysql from source code. And it was installed at:

$ whereis mysql
mysql: /usr/local/mysql

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

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

<小时>

这里是我的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.

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

I don't know what's wrong with it. Is everyone can help me? Thanks in advance!!

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

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

我已经卸载了 mysql2 并重新安装为 0.3.11:

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

并更新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 list | grep mysql2
mysql2 (0.3.13, 0.3.11)

顺便说一句,mysql(源码安装)的拥有者是mysql:

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/

然而,ruby 的所有者是root.

However, the owner of ruby is root.

是不是因为权限问题?

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

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

安装mysql2版本:0.3.11,使用--platform=ruby:

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 变量可以通过以下方式找到:

mysql variables can be found by:

$ 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服务器:

Do not forgot start mysql server:

$ sudo service mysql start

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

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

CentOS 的 NodeJS 安装:

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

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

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

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

推荐答案

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

Add this to GemFile gem 'mysql2', '~> 0.3.11' and try Bundling Again.

这篇关于rails 服务器 (4.0.0) 无法启动 - 错误:LoadError:8 lib/mysql2.rb:8:in `require': libmysqlclient.so.18的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆