2

我无法启动我的 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 `<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 。它安装在:

$ whereis mysql
mysql: /usr/local/mysql

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

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

3 回答 3

3

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

于 2013-10-06T17:14:10.240 回答
1

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

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

...此时已安装更新的 mysql2 gem,并且 rails 能够毫无问题地启动。

于 2017-02-13T14:35:57.883 回答
0

我的系统:- 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. 上压缩到“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. 导轨服务器。

享受 !!!

于 2014-03-31T16:56:42.913 回答