# Problems using the Mysql gem

**URL:** <https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437>\
**Category:** Ruby\
**Created:** [September 6, 2010, 11:27am UTC](https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437 "2010-09-06T11:27:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jimb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f4b2a3/32.png) [@jimb](https://www.ruby-forum.com/u/jimb)\
**Post date:** [September 6, 2010, 11:27am UTC](https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437/1 "2010-09-06T11:27:05Z")

</div>

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.

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![jimb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f4b2a3/32.png) [@jimb](https://www.ruby-forum.com/u/jimb)\
**Post date:** [September 6, 2010, 4:39pm UTC](https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437/2 "2010-09-06T16:39:50Z")

</div>

On Mon, Sep 6, 2010 at 11:27 AM, Jim B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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.

---

<div class="post-metadata">

**Author:** ![jimb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f4b2a3/32.png) [@jimb](https://www.ruby-forum.com/u/jimb)\
**Post date:** [September 7, 2010, 10:45am UTC](https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437/3 "2010-09-07T10:45:38Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jimb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/f4b2a3/32.png) [@jimb](https://www.ruby-forum.com/u/jimb)\
**Post date:** [September 6, 2010, 8:03pm UTC](https://www.ruby-forum.com/t/problems-using-the-mysql-gem/194437/4 "2010-09-06T20:03:52Z")

</div>

On Sep 6, 6:27 am, Jim B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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:

> **[Tutorials](https://github.com/oneclick/rubyinstaller/wiki/Tutorials)**
>
> RubyInstaller for Windows - Build recipes. Contribute to oneclick/rubyinstaller development by creating an account on GitHub.

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