win8 下ruby 连接 mysql5.6的问题

z5wjz 2013-06-04 12:12:25
环境如题,ruby版本为ruby 2.0.0p0 (2013-02-24) [x64-mingw32]

现象:连不上mysql

执行gem install mysql
报错如下

C:\windows\system32>gem install mysql
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

C:/Ruby200-x64/bin/ruby.exe extconf.rb
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:/Ruby200-x64/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}/
--with-libmysqllib
--without-libmysqllib


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.9.1 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.9.1/ext/mysql_api/gem_make.out

经查询网上资料,我把D:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dll 已经复制到了C:\Ruby200-x64\bin 目录

并且下载了mysql-2.8.2-x86-mingw32.gem,且成功执行gem install mysql-2.8.2-x86-mingw32.gem

但故障依旧,在我调用含有requier "mysql"的程序时,依然会报错如下:
C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- mysql/mysql_
api (LoadError)
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.8.2-x86-mingw32/lib/mysql.rb:6:in `rescue in <top (required
)>'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.8.2-x86-mingw32/lib/mysql.rb:2:in `<top (required)>'
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:in `require'
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:in `rescue in require'
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:35:in `require'
from aa.rb:1:in `<main>'

求高手解答。
...全文
3255 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjw1895 2014-08-19
  • 打赏
  • 举报
回复
http://kingxss.iteye.com/blog/2014443 看完这个就能解决了,我已解决
【阿鬼】 2013-08-27
  • 打赏
  • 举报
回复
下一个BitNami Ruby Stack 我是一个Ruby新手,配Rails配了三天了,mysql2怎么装都装不上 而且看得很多都是英文的,中文大多数一篇文章到处抄。 手动配置Ruby + Rails + sqlite3 + WEBrick(好像是安装rails自带的)都配了两天 当时想ruby这么容易上手,想不到rails这么难配。 目前用RubyStack还挺简单,可以看一下官方帮助。 希望能帮到你。 Ruby新手。
【阿鬼】 2013-08-27
  • 打赏
  • 举报
回复
网上找资料,大多都是说要装64位的mysql的,说要重新装一次,非常不愿意去试这个。 另外一个就是加config文件的路径安装 http://stackoverflow.com/questions/4966795/how-to-install-mysql-gem-on-mac-os-x 即 gem install mysql -- \ --with-mysql-config=/usr/local/bin/mysql_config 这试了这句成功了,然后bundle install, 还是悲剧,错误依旧 最后看到这个 http://serverfault.com/questions/289472/bundler-breaks-mysql-gem-causing-the-bundled-mysql-rb-driver-has-been-removed-f 在bundle install 加一句 bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 然后 bundle install 搞掂! 另: 这个错误也通常由于没有装mysql开发包引起,linux用以下命令安装 sudo apt-get install mysql-client libmysqlclient-dev 以上抄自:http://blog.sina.com.cn/s/blog_68f3bc280100w7lr.html
【阿鬼】 2013-08-27
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_68f3bc280100w7lr.html
z5wjz 2013-06-19
  • 打赏
  • 举报
回复
楼上的兄弟能再给详细说说么
sevk 2013-06-18
  • 打赏
  • 举报
回复
一般使用 sequel 链接数据库,不用 mysqlx
sevk 2013-06-18
  • 打赏
  • 举报
回复
gem search -r mysql
sevk 2013-06-18
  • 打赏
  • 举报
回复
gem install mysql2
xinbucun 2013-06-16
  • 打赏
  • 举报
回复
从上午弄到现在还没解决...晕死
z5wjz 2013-06-09
  • 打赏
  • 举报
回复
至今未能解决,看来在windows平台下,ruby确实不怎么好用啊
bovxiu2 2013-06-09
  • 打赏
  • 举报
回复
顶下 遇到同样问题 不知道楼主解决了没
parhelia512 2013-06-05
  • 打赏
  • 举报
回复
看提示 checking for main() in -llibmysql... no 说明找不到libmysql.lib,用以下命令: gem install mysql -- --with-mysql-lib="libmysql.lib所在路径"
z5wjz 2013-06-05
  • 打赏
  • 举报
回复
路径C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\mysql-2.9.1\ext\mysql_api\mkmf.log 文件内容如下: have_library: checking for main() in -lC:\Ruby200-x64\bin\libmysql.dll... -------------------- no "x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby200-x64/include/ruby-2.0.0/x64-mingw32 -IC:/Ruby200-x64/include/ruby-2.0.0/ruby/backward -IC:/Ruby200-x64/include/ruby-2.0.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby200-x64/lib -L. -lx64-msvcrt-ruby200 -lshell32 -lws2_32 -limagehlp -lshlwapi " checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <winsock2.h> 4: #include <windows.h> 5: int main(void) {return 0;} /* end */ "x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby200-x64/include/ruby-2.0.0/x64-mingw32 -IC:/Ruby200-x64/include/ruby-2.0.0/ruby/backward -IC:/Ruby200-x64/include/ruby-2.0.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby200-x64/lib -L. -lx64-msvcrt-ruby200 -lC:\Ruby200-x64\bin\libmysql.dll -lshell32 -lws2_32 -limagehlp -lshlwapi " conftest.c: In function 't': conftest.c:9:32: warning: variable 'p' set but not used [-Wunused-but-set-variable] e:/tools/soft/ruby/devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\Ruby200-x64\bin\libmysql.dll collect2.exe: error: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <winsock2.h> 4: #include <windows.h> 5: 6: /*top*/ 7: int main(void) {return 0;} 8: extern int t(void); 9: int t(void) { void ((*volatile p)()); p = (void ((*)()))main; return 0; } /* end */ "x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby200-x64/include/ruby-2.0.0/x64-mingw32 -IC:/Ruby200-x64/include/ruby-2.0.0/ruby/backward -IC:/Ruby200-x64/include/ruby-2.0.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby200-x64/lib -L. -lx64-msvcrt-ruby200 -lC:\Ruby200-x64\bin\libmysql.dll -lshell32 -lws2_32 -limagehlp -lshlwapi " e:/tools/soft/ruby/devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\Ruby200-x64\bin\libmysql.dll collect2.exe: error: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <winsock2.h> 4: #include <windows.h> 5: 6: /*top*/ 7: int main(void) {return 0;} 8: extern int t(void); 9: int t(void) { main(); return 0; } /* end */ --------------------
z5wjz 2013-06-05
  • 打赏
  • 举报
回复
感谢楼上朋友帮忙,我按您的方法试了一下,显示如下: C:\windows\system32>gem install mysql -- --with-mysql-lib="D:\Program Files\MySQL\MySQL Server 5.6\lib" Temporarily enhancing PATH to include DevKit... Building native extensions with: '--with-mysql-lib=D:\Program Files\MySQL\MySQL Server 5.6\lib' This could take a while... ERROR: Error installing mysql: ERROR: Failed to build gem native extension. C:/Ruby200-x64/bin/ruby.exe extconf.rb --with-mysql-lib=D:\Program Files\MySQL\MySQL Server 5.6\lib 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:/Ruby200-x64/bin/ruby --with-mysql-dir --without-mysql-dir --with-mysql-include --without-mysql-include=${mysql-dir}/include --with-mysql-lib=${mysql-dir}/ --with-libmysqllib --without-libmysqllib Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.9.1 for inspection. Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql-2.9.1/ext/mysql_api/gem_make.out
parhelia512 2013-06-04
  • 打赏
  • 举报
回复
native extension编译失败,把mkmf.log的内容发上来看看

2,763

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ruby/Rails
社区管理员
  • Ruby/Rails社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧