连接到localhost上的数据库的Ruby + MySQL错误

时间:2013-01-19 19:27:41

标签: mysql ruby

我正在处理这几天,并且无法连接到localhost上的简单mysql数据库。

require "mysql"

@db_host = "localhost"
@db_user = "myrubyapp"
@db_pass = "1234"
@db_name = "myrubyapp"

mysql = Mysql.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name)

我得到的输出是错误:can't convert Hash into String (TypeError)其中Mysql.new是。

第二个,我试图将gem更改为mysql2

require "mysql2"

@db_host = "localhost"
@db_user = "myrubyapp"
@db_pass = "1234"
@db_name = "myrubyapp"

mysql = Mysql2.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name)

输出也是错误,但与第一个不同:undefined method "new" for Mysql2:Module (NoMethodError)

伙计们我很抱歉我不得不提出这样的问题,但我真的很困惑,我在JavaSE和EE中有3年以上的编程经验,我很惭愧因为我无法处理接着就,随即。请指出我正确的方向,不要严厉地评价我。我是Ruby的新手。

3 个答案:

答案 0 :(得分:3)

尝试

mysql = Mysql2::Client.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name)

答案 1 :(得分:2)

正确的语法是:

client = Mysql2::Client.new(:host => "localhost", :username => "root")

有关更多示例,请参阅mysql2 on github

我建议你看一下Sequel原始的mysql2 lib提供非常有限的功能,Sequel可以做很多事情。

答案 2 :(得分:1)

从未使用过gem mysql,但是你试图删除hash:host =>等直接传递参数列表?
类似con = Mysql.new db_host, db_user, db_pass, db_name的东西 http://zetcode.com/db/mysqlrubytutorial/获得教程