MySQL 5.6 リファレンスマニュアル  /  ...  /  C API プリペアドステートメントの問題

23.8.18 C API プリペアドステートメントの問題


  • TIMETIMESTAMP、および DATETIME は秒の部分 (DATE_FORMAT() からなど) をサポートしていません。

  • 整数から文字列への変換時に、ZEROFILL は、MySQL サーバーが先頭のゼロを出力しない特定の場合に、プリペアドステートメントを使用できます。(たとえば、MIN(number-with-zerofill) によって)。

  • クライアントで浮動小数点数値を文字列に変換すると、変換された値の右端の桁が、元の値のそれとわずかに異なることがあります。

  • プリペアドステートメントは、セクション8.9.3.1「クエリーキャッシュの動作」に説明する状況でクエリーキャッシュを使用します。

  • プリペアドステートメントは、複数ステートメント (つまり、単一の文字列内にある ; 文字で区切られた複数のステートメント) をサポートしません。

  • プリペアド CALL ステートメントの機能については、セクション23.8.20「C API のプリペアド CALL ステートメントのサポート」で説明しています。

Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb
User Comments
  Posted by Yakov Livschitz on February 9, 2007
Be especially careful with the floating-point values in prepared statements when using replication. If a value is not a usual number but something like nan or -inf, it will be successfully stored as NULL on the server you're connected to, but replicated as "nan" (string) to the slaves, which will stop because of a syntax error.

Another issue is checksums of the tables. There are recommendations on the Web to check if master and slave are on sync comparing table checksums. However due to a limited floating point precision in ASCII SQL statements sent between master and slave (if query-level replication is used), the floating-point value on the slave is slightly different which results in a different table checksum.

Sign Up Login You must be logged in to post a comment.