Open slowjoe007 opened 7 years ago
If an error occurs during authentication (in my case the host I connect from is not permitted), the error message is attempted to be decoded. However, at that time @charset is not yet defined:
@charset
Uncaught exception: undefined method `encoding' for nil:NilClass C:/Ruby/2.3.0/lib/ruby/gems/2.3.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol.rb:502:in `read' C:/Ruby/2.3.0/lib/ruby/gems/2.3.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol.rb:178:in `authenticate' C:/Ruby/2.3.0/lib/ruby/gems/2.3.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:116:in `connect' C:/Ruby/2.3.0/lib/ruby/gems/2.3.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:50:in `new'
https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/protocol.rb#L502
As you can see from the stacktrace the line in method authenticate is 178. However, @charset is not defined before line 185: https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/protocol.rb#L178-L189
authenticate
178
185
I was able to help myself by modifying line 502 to:
502
message.force_encoding(Mysql::Charset.by_number(33).encoding)
where 33 is the numeric representation of UTF-8: https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/charset.rb#L63
33
UTF-8
If an error occurs during authentication (in my case the host I connect from is not permitted), the error message is attempted to be decoded. However, at that time
@charset
is not yet defined:https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/protocol.rb#L502
As you can see from the stacktrace the line in method
authenticate
is178
. However,@charset
is not defined before line185
: https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/protocol.rb#L178-L189I was able to help myself by modifying line
502
to:where
33
is the numeric representation ofUTF-8
: https://github.com/tmtm/ruby-mysql/blob/44520a12fac454a41a3759256f42fea04f0032d3/lib/mysql/charset.rb#L63