1

次の設定を使用してリモート DB に接続します。

class MyModel < ActiveRecord::Base
self.table_name = 'users'
establish_connection(
adapter: "mysql2",
host: "host_ip",
encoding: "koi8u",
username: "custom_name",
password: "password",
database: "db_name")
end

それはうまく接続しますが、クエリを作成すると、次のようなものが返されます。

また、次のような接続の別のバリアントも試します。

connection = Mysql2::Client.new( host: 'host_name',                                                            
username: 'user',                                                                     
password: 'password',                                                                     
port: 3306,                                                                  
database: 'db_name',                                                              
encoding: 'koi8u',                                                                    
reconnect: true                                                                     
)

この場合、接続オブジェクトを受け取りますが、クエリを作成できません... connection.query("SELECT * FROM users") を使用すると、接続オブジェクトが返されます...また、エンコーディングをチェックすると、次のように返されます:

MyModel.first.Address.encoding.name
MyModel Load (6.8ms)  SELECT `users`.* FROM `users` ORDER BY `users`.`login` ASC LIMIT   
1
=> "UTF-8"

設定では koi8u を使用します !

このDBのMySQLサーバーの文字セットをチェックしていました- koi8u に設定されています!

何か案は?このDBに通常の文字セットで接続する必要があります

4

1 に答える 1

0

あなたのデータベースのロケールは、あなたが期待するものとは異なっているように思えます。それを変更したり、どこかの段階で設定したりしましたか?

接続文字列でそれについて宣言するだけでは不十分です

ここで、データベースの文字セットを確認する方法を見つけることができます

MySQL データベース / テーブル / カラムの文字セットを確認するにはどうすればよいですか?

于 2013-07-21T18:22:19.860 に答える