10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册
PDF(美国高级主任)- 26.8 mb
PDF (A4)- 26.8 mb


B.5.8 MySQLの既知の問題

このセクションでは,最新バ,ジョンのMySQLの既知の問題を一覧表示します。

プラットフォム固有の問題にいては,セクション2.1 "一般的な▪▪ンスト▪▪ルガ▪▪ド"およびセクション24.4“MySQLのデバッグおよび移植”の▪▪ンスト▪▪ルおよび移植の手順を参照してください。

次の問題は既知の問題です。

  • のサブクエリ,の最適化は,ほど効果はありません。

  • lower_case_table_names = 2(データベース名およびテーブル名に大文字/小文字のどちらが使用されたかをMySQLが認識するようになります)を使用していても,MySQLが関数数据库()のデータベース名,またはさまざまなログ内(大文字/小文字が区別されないシステムの)で使用された表記を識別できません。

  • スレ,ブで制約に別の名前がある可能性があるため,外键制約のドロップがレプリケ,ションで動作しません。

  • 取代(および)取代オプションを指定した加载数据)で删除级联がトリガ,されません。

  • 截然不同的リストに指定されたすべてのカラムのみを使用しない場合,GROUP_CONCAT ()内で命令を指定した截然不同的が動作しません。

  • 大きい整数値(2)63から264−1まで)を10進数カラムまたは文字列カラムに挿入する場合,数値は符号付き整数のコンテキストで評価されるため,負の値として挿入されます。

  • 分析表优化表,および修理表が,插入延迟を使用している非トランザクションテ,ブルで問題となることがあります。

  • ステートメントベースのバイナリロギングでは,マスターは実行されたクエリーをバイナリログに書き込みます。これは,ほとんどの場合に理想的に動作する非常に高速かコンパクトで効率的なロギング方法です。ただし,データの変更が非決定的であるようにクエリーが設計されている(通常,レプリケーション以外でも推奨されるやり方ではありません)場合,マスターおよびスレーブのデータで相違が発生する可能性があります。

    例:

    • ゼロ値または値をAUTO_INCREMENTカラムに挿入する创建表…选择ステ,トメントまたは插入……选择ステ,トメント。

    • 删除级联プロパティが指定された外部キを持テブルから行を削除する場合の删除

    • 挿入されるデ,タに重複キ,値がある場合の取代……选择插入ignore…选择

    これは,前述したクエリ,に決定性順序を保証する命令句がない場合にのみ発生することがあります

    たとえば,命令が指定されていない插入……选择の場合,マスタ,およびスレ,ブでのオプティマ,选择が異なる順序で行を返すことがあります(それにより,行が異なるランクを持)ことになり,AUTO_INCREMENTカラムで異なる数値が取得されます)。

    次の場合にのみ,マスタ,とスレ,ブでクエリ,の最適化が異なる結果となります。

    • マスタ,とスレ,ブで,テ,ブルが異なるストレ,ジエンジンを使用して格納される。(マスタ,とスレ,ブで異なるストレ,ジエンジンを使用できます。たとえば,マスタ,ではInnoDBを使用するが,スレ,ブの使用可能なディスク領域が少ない場合は,スレ,ブでMyISAMを使用できます。)

    • MySQLのバッファサズ(key_buffer_sizeなど)がマスタ,とスレ,ブで異なる。

    • マスターとスレーブで異なるバージョンのMySQLを実行していて,オプティマイザのコードがそれらのバージョンで異なる。

    この問題は,mysqlbinlog | mysqlを使用したデ,タベ,スのリストアに影響することもあります。

    この問題を回避するもっとも簡単な方法は,行が常に同じ順序で格納または変更されるように,命令句を前述の非決定性クエリ,に追加することです。行ベ,スのロギング形式または混合したロギング形式を使用することでも,この問題が回避されます。

  • スタートアップオプションにファイル名を指定しない場合,ログファイル名はサーバーのホスト名に基づいています。ホスト名を別の名前に変更した場合に同じログファ电子邮箱ル名のままにするには,——log-bin =old_host_nameなどのオプションを明示的に使用する必要があります。セクション5.1.3 "サ,バ,コマンドオプション"を参照してください。または,ホスト名の変更が反映されるように,古いファイルを名前変更します。バイナリログの場合は,バイナリログのインデックスファイルを編集して,そこにあるバイナリログファイル名も修正する必要があります。(スレーブサーバーのリレーログも同様です)。

  • 加载数据文件ステトメントのあとに残っている一時ファルが,mysqlbinlogによって削除されません。セクション4.6.8 "mysqlbinlog-バナリログファルを処理するためのユティリティ”を参照してください。

  • 重命名临时テ,ブル,または合并テ,ブルで使用されているテ,ブルで動作しません。

  • 字符集を使用したときに,デ,タベ,ス,テ,ブル,およびカラムの名前に変換された文字を使用できません。

  • 喜欢……逃避逃避で,_またはを使用できません。

  • デ,タ値を比較するときに,最初のmax_sort_lengthバ@ @トのみが使用されます。これは,最初のmax_sort_lengthバ电子邮箱トで値が有意に識別されない場合,集团命令,または截然不同的で値を信頼して使用できないことを意味します。これを回避するには,変数値を増やします。max_sort_lengthのデフォルト値は1024であり,サ,バ,の起動時または実行時に変更できます。

  • 数値計算は长整型数字または(通常,どらも長さは64ビットです)で行われます。返される精度は関数によって異なります。一般的なル,ルとしては,ビット関数は长整型数字の精度,如果()英语教学()长整型数字またはの精度,および残りはの精度で実行されます。符号なしの长长的値がビットフィールド以外で63ビット(9223372036854775807)を超える値に解決される場合は,使用しないようにしてください。

  • 1枚举カラムおよびカラムを作成できます。

  • 現在、MIN ()MAX (),およびその他の集約関数では,MySQLはセット内の文字列の相対位置ではなく文字列値で枚举カラムおよびカラムを比較します。

  • 更新ステ,トメントでは,カラムは左から右に更新されます。更新されたカラムを参照している場合は,元の値ではなく更新された値が取得されます。たとえば,次のステ,トメントでは关键1ではなく2が@ @ンクリメントされます。

    mysql >更新tbl_name设置键=键+ 1,键=键+ 1;
  • 同じクエリーで複数の一時テーブルを参照することはできますが,特定の一時テーブルを複数回参照することはできません。たとえば,次のステ,トメントは動作しません。

    mysql> SELECT * FROM temp_table, temp_table AS t2;错误1137:不能重新打开表:'temp_table'
  • 結合で隠しカラムを使用している場合は,オプティマ截然不同的の処理が異なることがあります。結合では、隠しカラムは結果の一部としてカウントされますが (表示されていなくても)、通常のクエリーでは、隠しカラムは截然不同的比較で考慮されません。

    次に例を示します。

    SELECT DISTINCT mp3id FROM band_10bet手机中文版downloads WHERE userid = 9;

    および

    选择不同的band_downloads。10bet手机中文版mp3id FROM band_10bet手机中文版downloads,band_mp3 WHERE band_downloads。userid = 9 AND band_mp3。Id = band_10bet手机中文版downloads。mp3id ORDER BY band_10bet手机中文版downloads。id DESC;

    2番目の例では,MySQL Server 3.23。Xを使用すると,結果セットに2の同じ行が取得されることがあります(隠しカラム. exeidの値が異なる可能性があるためです)。

    これは,結果に命令のカラムがないクエリ,でのみ発生します。

  • 空のセットを返すクエリ,に関する过程を実行すると,过程でカラムが変換されないことがあります。

  • 合并タプのテブルの作成で,基礎テブルが互換性のあるタプであるかどうかがチェックされません。

  • ALTER TABLEを使用して,合并テ,ブルで使用されるテ,ブルに独特的@ @ンデックスを追加し,@ @次に合并テブルに通常のンデックスを追加したときに,テブルに古い独特的ではないキ,があった場合,それらのテ,ブルのキ,順序は異なります。これは,重複キ,をできるだけ早く検出できるように,ALTER TABLEが通常の@ @ンデックスより独特的ンデックスを優先するためです。