2

環境:

  • MySQL-python-1.2.3.win-amd64-py2.7

  • python-2.7.amd64

  • mysql-installer-community-5.6.12.2

  • Windows Server 2008 R2 データセンター

Python スクリプトを使用してデータを挿入すると、操作エラー 1366 が発生します。2010年からのEPFImporterを実行する必要があります

問題は、MySQLdbuft8utf8mb4_unicode_ci. インポートする必要があるデータには utf8mb4 文字が含まれており、削除できない可能性があります。

CMD コマンド ラインからスクリプトを実行すると、〜 70.000 行が正常に挿入された後、次のエラー メッセージが表示されます。

2013-07-31 15:14:53,460 [ERROR]: Fatal error encountered while ingesting 'C:\webserver\www\site1\assets\scripts
Traceback (most recent call last):
  File "C:\webserver\www\site1\assets\scripts\EPFImporter\EPFIngester.py", line 129, in ingestFull
    self._populateTable(self.tmpTableName, skipKeyViolators=skipKeyViolators)
  File "C:\webserver\www\site1\assets\scripts\EPFImporter\EPFIngester.py", line 379, in _populateTable
    cur.execute(exStr)
  File "C:\Windows\python\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "C:\Windows\python\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A A...' for column 'description' at row 1")

私はすでに作った:

ALTER DATABASE databaseXYZ CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci

そして、以下を INNODB から次のように変更しました。

default storage engine  MyISAM  Documentation
default tmp storage engine  MyISAM 

この変更の前は、行をまったくインポートしていませんでした。

他に何ができますか?通常、共有ホストでMySQLサーバーバージョン5.5.28で実行していたため、正常に機能するはずです。

EDIT1:テストのために、最新のXAMPPバージョンをインストールしました。XAMPPの下では、ApacheではなくXAMPP-MySQLサーバーのみを実行して、スクリプトが正常に実行されています。Python と MySQLdb のバージョンは以前と同じままで、変更されていません。したがって、MySQL-Server の構成で何か間違ったことをしたと確信しています。XAMPP では、DB は InnoDB Engine で実行されます。

XAMPP MYSQL サーバーの仕様は次のとおりです。

Server: 127.0.0.1 via TCP/IP
Server type: MySQL
Server version: 5.6.11 - MySQL Community Server (GPL)
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)

元の MySQL セットアップで問題を追跡するために何ができるかを知っている人はいますか? 変数の設定、MYSQL エラー処理、または Python コネクタの何かでしょうか?

4

1 に答える 1

1

phpmyadmin > localhost > 変数で XAMPP-MySQL と通常の MySQL の値を比較することで問題を解決しました

通常の MySQL 変数のいくつかの値を変更したため、どの変更が最終的に問題を解決したかは 100% わかりませんが、次のように変更されていたと思います。

sql mode    NO_ENGINE_SUBSTITUTION

以前に削除した strict_mode のような他の値がいくつかありました。

于 2013-08-01T19:09:45.033 に答える