2016-09-06 3 views
0

web2pyでは、mySQLデータベースにテーブルを作成するときに、type = 'string'の列が完全な4バイトのUnicode形式(utf8mb4)を使用するようにするにはどうすればよいですか?web2pyでmySQL列にutf8mb4を指定するにはどうすればよいですか?

+0

をあなたが作成中のデータベース、テーブルまたは列レベルでそれを指定します。テーブルレベルでは '' collat​​e = 'または' 'charset ='で終わる ')'の後に来ます。列レベルでは、create tableステートメント内で自然に発生します。 – Drew

+0

'collat​​e ='を指定した場合、mysqlはそれをルール化しているcharsetにマップします。マニュアルページはこちらhttp://dev.mysql.com/doc/refman/5.7/en/charset-table.html – Drew

+0

ありがとう、ありがとう。しかし、web2pyでこれがどのように行われているかわかりません。 Field()コンストラクタは '照合'オプションを使用しませんhttp://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Field-constructor – user2667066

答えて

1

web2pyの側からは、接続文字列にset_encodingパラメータでエンコーディングを指定することができます。

db = DAL('mysql://username:[email protected]/test?set_encoding=utf8mb4') 
+0

ありがとう。 appconfig.iniの文字列をuriパラメータに "?set_encoding = utf8mb4"を追加して変更しようとしましたが、_get_server_informationの "gluon/contrib/pymysql/connections.py"という行891が表示されます。self.server_version = data [i私はそれがうまくいけば、テーブルの作成/移行コマンドをデフォルトにするでしょうか?:server_end] .decode(self.charset)LookupError:不明なエンコーディング:utf8mb4 "私はutf8mb4をpymysql/charset.pyに定義しています。適切なユニコード? – user2667066

関連する問題