列に対する桁溢れを切り捨てて平気な顔をしているMySQLらしさに溢れてる、といえなくもない。(後述するが、本家にはこのバグはない模様)こんな調査を進めていった結果、以下のようになりました。分割&正しく格納2年以上前のバージョンの挙動差異の確認とか、なにそれ考古学の世界かよ。追記1.4.1(ていうか1.4.0~1.4.2)は、別のバグが"Blocker"で報告されています。少なくとも1.4.3までは引き上げる必要があります。1.4.2~2.2.0RCに影響のあるバグ(古いものには影響がない!)も見つかります。他のバグも含めて、要注意ですね。激しく古いヤツを調べてみる。3.1.13(2006-05-26)」ってことなので、当初どうだったのか調べてみる。バルクインサートしてない!まさかの、バルクインサートしてない!という。なったら、rewriteBatchedStatementsでバルクインサートをサポートした時期がいつなのか、探してやる。サポートした途端、バグなしで動いています。5.0.5のリリースノートを読んでみたのですが、書いてねえ。(2007-03-02)ドキュメントの読み込みが甘いかもしれないけど、最新のリファレンスにもそんな機能があるって書いてないし、さもありなん。Connector/Jは、バルクインサート文を自動で構築してくれる機能がある。MySQL互換のMariaDBも、MariaDBconnector/Jを提供していて、同じバルク対応機能もある。MariaDBconnector/J(mariadb-client-java)の古いバージョン(1.4.0以前)には、バグがある。Connector/JでrewriteBatchedStatementsパラメータが追加されたのは3.1.13(2006-05-26)からだが、このときexecuteBatch()バルクインサート自動生成機能は未対応。Connector/Jでバルクインサート文を自動で構築してくれる機能は、5.0.5(2007-03-02)から。このバージョンにバグはない。Connector/J考古学でした?最後にJDBCドライバがバルクインサート文を自動生成してくれる、ってなかなかすごい機能だな、と思いました。プログラマが意図してexecuteBatchを発行した単位をガン無視して、max_allowed_packetを超えないように丸めて分割してバルクインサート文作ってる、なかなか豪快な機能です。バグを踏んでない限りエラーにならないから、裏でこんな動きをしているとか、フツーは意識しないよね。バグは世の常なので、まあ、仕方ないよね。Connector/Jのリリース頻度、10日刻みとかですし、改善されていってるのをひしひしと感じます。ドライバは、なるべく新しいものを使おう!おまけConnector/Jでのバルクインサート文の自動生成は、「max_allowed_packet」だけを基準にしています。max_allowed_packetの場合、net_buffer_lengthが1SQLの上限値になる。max_allowed_packetの場合、max_allowed_packetが1SQLの上限値になる。なからなLifeは適用されません。query」で落ちます。あたりまえといえば、あたりまえか。読者になる@atsuizoをフォローRSSFeedlyへの登録はこちらからFeedly以外への登録は、お手数ですが以下URLを登録お願いします。MySQL注目記事はてなブログをはじめよう!atsuizoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。