基本故障排除 101:
如果文字字符串起作用,而变量赋值不起作用,那么怀疑你的变量赋值;其中一个可能有问题,例如隐形字符。
尝试:
vars = ('localhost','root','admin','one')
Mysql.new(*vars)
然后尝试:
vars = %w(localhost root admin one)
Mysql.new(*vars)
或者:
host, username, password, db = %w(localhost root admin one)
Mysql.new(host, username, password, db)
或者:
host, username, password, db = 'localhost','root','admin','one'
Mysql.new(host, username, password, db)
这个想法是从你知道的工作开始,然后向后工作,直到分配给变量工作,或者它坏了。那时你要么解决了问题(可能不知道为什么),要么你已经知道是什么破坏了它。无论哪种方式,你都领先。
你说:
当我打印所有变量时,会打印正确的值。
你是如何打印变量的?我们看不到您的终端,您也没有向我们提供该信息。如果它是一个不可见的字符,这是复制和粘贴文本时的常见罪魁祸首,打印时它可能不会显示。检查变量应该会有所帮助,因为它们应该显示为转义值:
password = "root\u00a0"
puts password
# >> root
puts password.inspect
# >> "root "
puts password.chars
# >> r
# >> o
# >> o
# >> t
# >>
puts password.unpack('C*').map{ |s| s.to_s(16) }
# >> 72
# >> 6f
# >> 6f
# >> 74
# >> c2
# >> a0
否则,我回到我原来的评论,这是你如何设置你的 MySQL root 帐户的问题,你应该阅读“用户'root'@'localhost'的访问被拒绝(使用密码:YES)(Mysql::错误) ”。