Problems using the Mysql gem

Hi,

I’m using the mysql (2.8.1 x86-mingw32) gem and MySQL Server version
5.0.90 on Windows 7, 64 bit. I’m also using ruby 1.8.7.

When I run the following script (replacing user name and password
appropriately)

require “rubygems”
require “mysql”
dbh = Mysql.real_connect(“localhost”, “user”, “pass”, “test”)
puts "Server version: " + dbh.get_server_info
dbh.close

I get the following error message:

./test.rb:3: uninitialized constant Mysql (NameError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in
gem_original_require' from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:inrequire’
from mysql.rb:2

Exit code: 1

Can anyone give me a pointer as to what is going wrong?
I have tried googling the error message, but with no luck.
I have also read the documentation installed with the gem and as far as
I can tell I am using the correct syntax.

Thanks in advance.

On Mon, Sep 6, 2010 at 11:27 AM, Jim B. [email protected]
wrote:

Hi,

I’m using the mysql (2.8.1 x86-mingw32) gem and MySQL Server version
5.0.90 on Windows 7, 64 bit. I’m also using ruby 1.8.7.

When I run the following script (replacing user name and password
appropriately)

require “rubygems”
require “mysql”
dbh = Mysql.real_connect(“localhost”, “user”, “pass”, “test”)
puts "Server version: " + dbh.get_server_info
dbh.close

I get the following error message:

./test.rb:3: uninitialized constant Mysql (NameError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in
gem_original_require' from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in require’
from mysql.rb:2

Exit code: 1

Can anyone give me a pointer as to what is going wrong?
I have tried googling the error message, but with no luck.
I have also read the documentation installed with the gem and as far as
I can tell I am using the correct syntax.

I can’t test it in Windows, but I’ve tested in Ubuntu with Ruby 1.8.7
and mysql gem 2.8.1 and it works.
Line 2 of mysql.rb is doing a require of mysql_api, which in Ubuntu
loads a mysql_api.so from the same folder.
Did the gem install correctly in Windows? I guess you should have a
mysql_api dll somewhere in your gem structure.
I’m just guessing, since I don’t know how the mysql gem installs under
Windows, but maybe this gives you some clue.

In fact, taking a look at the code:

begin
require ‘mysql_api’
rescue LoadError
if RUBY_PLATFORM =~ /mingw|mswin/ then
RUBY_VERSION =~ /(\d+.\d+)/
require “#{$1}/mysql_api”
end
end

it seems that if requiring mysql_api fails and the platform is
Windows, it tries to load a specific version. Does that help?

Jesus.

Hi,

Thanks for the replies.

After much hair pulling and messing around with environment variables I
finally figured out what was going wrong.

It is quite embarrassing, but I’ll post it here as it might help someone
else.

The problem was that I’d actually called the file I was working on
‘mysql.rb’.
As the require ‘mysql’ line at the beginning of my code looks in the
current directory first, my code was just including itself, and not the
gem I wanted.
Doh!

Thanks again for your help.

On Sep 6, 6:27 am, Jim B. [email protected] wrote:

Hi,

I’m using the mysql (2.8.1 x86-mingw32) gem and MySQL Server version
5.0.90 on Windows 7, 64 bit. I’m also using ruby 1.8.7.

Is MySQL installed in 64bits? Or is 32bits MySQL?

Please note that MySQL binary needs a 32bits version of MySQL 5.0
“libmysql.dll”

You can find more details about copying libmysql.dll or about
compiling MySQL gem for 5.1 in RubyInstaller tutorial page:

Can anyone give me a pointer as to what is going wrong?
I have tried googling the error message, but with no luck.
I have also read the documentation installed with the gem and as far as
I can tell I am using the correct syntax.

It might be that you don’t have 32bits libmysql.dll somewhere in the
PATH for Ruby to use.

Placing a 32bits libmysql.dll in Ruby bin directory should help.