我想更多地使用 Ruby,目前似乎已经掌握了 sinatra,但现在还想从关系数据库中提取数据。我倾向于使用 Mysql 来测试应用程序并尝试安装 gem,但是当它尝试编译它所依赖的本机 do_mysql gem 时,我不断收到异常。
我确实安装了本机扩展,并且它们对于 JSON gem 工作得很好,我记得不久前在某处读到,目前 Windows 不支持 do_mysql,所以只是想知道情况是否仍然如此。
在 Windows 7 上使用 ruby 1.9.2(通过 ruby 安装程序 + 本机扩展安装)
以下是例外情况,以防有帮助:
C:\dump\ruby\DataMapperTest\gems>gem install dm-mysql-adapter-1.2.0.gem
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing dm-mysql-adapter-1.2.0.gem:
ERROR: Failed to build gem native extension.
C:/Tools/Ruby192/bin/ruby.exe extconf.rb
checking for my_global.h... no
checking for mysql.h... no
checking for main() in -llibmysql... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for localtime_r()... no
checking for gmtime_r()... no
checking for mysql.h... no
checking for MYSQL_TYPE_STRING in mysql.h... no
checking for MYSQL_TYPE_BIT in mysql.h... no
checking for MYSQL_TYPE_NEWDECIMAL in mysql.h... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for mysql_sqlstate() in mysql.h... no
checking for mysql_get_ssl_cipher() in mysql.h... no
checking for mysql_set_character_set() in mysql.h... no
checking for mysql_get_server_version() in mysql.h... no
checking for MYSQL_FIELD.charsetnr in mysql.h... no
creating Makefile
make
C:/Tools/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_do_mysql'" > do_mysql-i386-
mingw32.def
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I. -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
-Wno-missing-field-initializers -Wno-long-long -Wall -o do_common.o -c do_com
mon.c
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I. -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
-Wno-missing-field-initializers -Wno-long-long -Wall -o do_mysql.o -c do_mysq
l.c
do_mysql.c:5:19: fatal error: mysql.h: No such file or directory
compilation terminated.
make: *** [do_mysql.o] Error 1
Gem files will remain installed in C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_
mysql-0.10.7 for inspection.
Results logged to C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_mysql-0.10.7/ext/
do_mysql/gem_make.out
C:\dump\ruby\DataMapperTest\gems>
已安装和配置 Mysql 5.5 社区版,并且 Mysql 已添加到系统 PATH 中。
I am wanting to play some more with Ruby and currently seem to have a grasp of sinatra, but would also like to now pull in data from a relational database. I tend to use Mysql for test apps and tried installing the gems but I keep getting an exception when it tries to compile the native do_mysql gem which it is reliant upon.
I do have the native extensions installed and they worked fine for the JSON gem, I remember reading somewhere a while back that the do_mysql wasnt supported for windows currently, so was just wondering if this is still the case.
Using ruby 1.9.2 on windows 7 (installed via ruby installer + native extensions)
Here is the exception incase it helps:
C:\dump\ruby\DataMapperTest\gems>gem install dm-mysql-adapter-1.2.0.gem
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing dm-mysql-adapter-1.2.0.gem:
ERROR: Failed to build gem native extension.
C:/Tools/Ruby192/bin/ruby.exe extconf.rb
checking for my_global.h... no
checking for mysql.h... no
checking for main() in -llibmysql... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for localtime_r()... no
checking for gmtime_r()... no
checking for mysql.h... no
checking for MYSQL_TYPE_STRING in mysql.h... no
checking for MYSQL_TYPE_BIT in mysql.h... no
checking for MYSQL_TYPE_NEWDECIMAL in mysql.h... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for mysql_sqlstate() in mysql.h... no
checking for mysql_get_ssl_cipher() in mysql.h... no
checking for mysql_set_character_set() in mysql.h... no
checking for mysql_get_server_version() in mysql.h... no
checking for MYSQL_FIELD.charsetnr in mysql.h... no
creating Makefile
make
C:/Tools/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_do_mysql'" > do_mysql-i386-
mingw32.def
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I. -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
-Wno-missing-field-initializers -Wno-long-long -Wall -o do_common.o -c do_com
mon.c
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I. -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
-Wno-missing-field-initializers -Wno-long-long -Wall -o do_mysql.o -c do_mysq
l.c
do_mysql.c:5:19: fatal error: mysql.h: No such file or directory
compilation terminated.
make: *** [do_mysql.o] Error 1
Gem files will remain installed in C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_
mysql-0.10.7 for inspection.
Results logged to C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_mysql-0.10.7/ext/
do_mysql/gem_make.out
C:\dump\ruby\DataMapperTest\gems>
Mysql 5.5 community edition is installed and configured and Mysql has been added to the system PATH.
发布评论
评论(2)
DataMapper 和 DataObjects(连接到数据库的较低层)在 Windows 上工作。
但是,似乎 do_mysql 0.10.7 缺少
x86-mingw32
平台的预编译二进制文件:http://rubygems.org/gems/do_mysql/versions
你可以使用MySQL Connector/C接口自己编译do_mysql,它与你安装的MySQL版本无关你的电脑。
请查看此博客文章,其中提供了安装说明:
http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/
说明用于
mysql
gem,但将其更改为do_mysql
应该可以工作(除了 MySQL 特定的示例代码。希望有所帮助。
DataMapper and DataObjects (the lower layer that connects to the DB) do works on Windows.
However, seems that do_mysql 0.10.7 is missing the precompiled binary for
x86-mingw32
platform:http://rubygems.org/gems/do_mysql/versions
You can compile do_mysql yourself using MySQL Connector/C interface, which is independent of the version of MySQL you have installed in your computer.
Please take a look to this blog post which provides installation instructions:
http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/
The instructions are for
mysql
gem, but changing it todo_mysql
should work (except for the example code which is MySQL specific.Hope that helps.
要取消链接路易斯的答案,它看起来像这样:
gem install do_mysql --platform=ruby -- --with-mysql-dir="C:/PROGRA~1/MySQL/MYSQLS~1.7/"
其中“mysql- dir”路径是 x64 系统上“C:\Program Files”中“MySQL Server 5.7”目录的简短版本。
to delinkify Luis' answer, it looks something like this:
gem install do_mysql --platform=ruby -- --with-mysql-dir="C:/PROGRA~1/MySQL/MYSQLS~1.7/"
where the "mysql-dir" path is the short version of the "MySQL Server 5.7" directory in "C:\Program Files" on a x64 system.