2016-09-13 6 views
1

私はflaskアプリを実行し、のリモートrethinkdbデータベースに接続しています。アプリはまたpythonanywhere.comに配備されていますが、この展開は、次のエラーを投げ続け:'idna'コーデックを使用したエンコーディングがRethinkDBで失敗しました

Traceback (most recent call last): 
File "/home/user/.virtualenvs/venv/lib/python3.5/encodings/idna.py", line 165, in encode 
    raise UnicodeError("label empty or too long") 
UnicodeError: label empty or too long 

... 

rethinkdb.errors.ReqlDriverError: Could not connect to rethinkdb://[user]:[password]@aws-us-east-1-portal.1.dblayer.com:23232. Error: encoding with 'idna' codec failed (UnicodeError: label empty or too long) 

接続コードは正確に次のようになります。

conn = r.connect(host='aws-us-east-1-portal.1.dblayer.com', 
      port=23232, 
      auth_key='[auth_key]', 
      ssl={'ca_certs': './cacert'}) 

私はここから続行するかどうかはわかりません。

Python 3.5を実行中です。

+0

「rethinkdb:// [user]:[password] @ aws-us-east-1-portal.1.dblayer.com:23232」という文字列がエラーメッセージのどこから来るのか混乱しています。 あなたの 'r.connect'コードスニペットはその文字列を含んでおらず、RethinkDBドライバは確かにこのようなURIを生成しません。だから、 'r.connect'スニペットがエラーと一致しないようですね? –

答えて

2

idnaコーデックがrethinkdb URLをASCII対応の同等の文字列に変換しようとしています。

これが私の仕事:

"rethinkdb://user:[email protected]:23232".encode("idna") 

をだから私の推測では、ユーザー名やパスワードの文字のいくつかの文字/シーケンスが問題を引き起こしているということです。非常に単純なパスワード(おそらくは偽の)で接続を試してみて、同じ問題が発生していないかどうかを確認してください。

また、Pythonシェルで接続文字列でエンコードし、問題のある部分を特定するまで徐々に簡略化することもできます。

関連する問題