3
static byte[] ac = {'\\', '\'', '{', '}', '{'}; //not OK insert into tt values('\\\'{}{')
static byte[] ac = {'\\', '\'', '{', '}'}; //OK insert into tt values('\\\'{}')
static byte[] ac = {'\\', '\'', '{'}; //OK insert into tt values('\\\'{')
static byte[] ac = {'\'', '{', '}', '{'}; //OK insert into tt values('\'{}{')
static byte[] ac = {'\\', '{', '}', '{'}; //OK insert into tt values('\\{}{')
  • Ubuntuシステム
  • MySQL 5.5
  • MySQL JDBC 5.1.22

ブロブテーブルフィールドに5バイトを挿入できません。バイトは上に表示されています。データソース接続のエンコーディングはに設定されていUTF-8ます。

関連情報:http ://dev.mysql.com/doc/refman/5.5/en/string-literals.html

なぜ{}そんなに特別なのか、何か考えはありますか?ワークベンチで動作します。

うまくいかない場合は、次の例外が発生しました。

java.sql.SQLException: Not a valid escape sequence: {')

4

1 に答える 1

5

これは、MySQL の JDBC クライアント (Connector/J) の一部のバージョンのバグです。http://bugs.mysql.com/bug.php?id=31457 (およびそこからリンクされているその他のバグ) を参照してください。最新の Connector/J にアップグレードすることで修正できるはずです。または、エスケープ処理を無効にすることで回避できます ( Statement.setEscapeProcessing(false).

于 2013-03-01T07:39:40.127 に答える