我正在处理这几天,并且无法连接到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的新手。
答案 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/获得教程