環境
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]
mysql2 (0.2.7)
Rails 3.0.7
問題
啥都還沒做光把資料庫預設為mysql 指令rails new webstie -d mysql
開完controller 馬上出現下面
TypeError
can't convert Fixnum into String
原因:因為你的Mysql 密碼是數字! (驚)
解決辦法
1. 修改mysql 密碼 (治標)
mysqladmin -h localhost -u root password
2. 更改Gem程式碼(治本)
Git上討論的解法
https://github.com/krekoten/mysql2/commit/68795e295e64faee357a56947b5cf09a2de397c1
中文步驟
編輯
ssl_set(*opts.values_at(:sslkey, :sslcert, :sslca, :sslcapath, :sslciper))
user = opts[:username]
- pass = opts[:password]
+ pass = opts[:password] ? opts[:password].to_s : nil
host = opts[:host] || 'localhost'
port = opts[:port] || 3306
spec/mysql2/client_spec.rb 備註:+號不要放啊 第一行 那是程式 不用怕XD
}.should raise_error(Mysql2::Error)
end
end
+
+ it 'should convert password to string' do
+ lambda do
+ client = Mysql2::Client.new(:password => 12345)
+ end.should_not raise_error(TypeError, "can't convert Fixnum into String")
+ end
it "should accept connect flags and pass them to #connect" do
klient = Class.new(Mysql2::Client) do
database = opts[:database]
哈哈是喔 小弟這週才開始摸不知道還有這招 感謝ihower大
又學了一招
可以不用改code這麼麻煩吧,改 database.yml 加上引號即可。
password: "123456"