MySQL 5.1 リファレンスマニュアル :: 7 クライアントプログラムとユーティリティ プログラム :: 7.7 mysql — MySQL コマンド ライン ツール :: 7.7.5 mysqlヒント :: 7.7.5.2 --safe-updatesオプションを使用する
« 7.7.5.1 クエリ結果を縦に表示する

7.7.5.3 mysql自動再接続の無効化 »
Section Navigation      [Toggle]
  • 7.7.5 mysqlヒント
  • 7.7.5.1 クエリ結果を縦に表示する
  • 7.7.5.2 --safe-updatesオプションを使用する
  • 7.7.5.3 mysql自動再接続の無効化

7.7.5.2. --safe-updatesオプションを使用する

初心者にとって、使いやすいスタートアップオプションは--safe-updates (あるいは同じ効果のある--i-am-a-dummy)です。これはDELETE FROM tbl_nameステートメントを発行したが、WHERE節を忘れてしまった場合に便利です。通常、このようなステートメントはテーブルから全ての行を消去します。--safe-updatesでは、行を表すキー値をとくていすることで飲み、行を消去することができます。これにより、間違いや事故を予防します。

--safe-updatesオプションを使用するとき、mysqlはMySQLサーバに接続した際以下のステートメントを 発行します。

SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;

詳しくはこちらをを参照してください項12.5.3. 「SET 構文」。

SETステートメントには以下の効果があります。

  • UPDATEやDELETEステートメントは、WHERE節内でキー制限を特定するか、LIMIT節を提供するか(あるいは両方)しないかぎり、実行は許容されません。例:

    UPDATE tbl_name SET not_key_column=val WHERE key_column=val;
    
    UPDATE tbl_name SET not_key_column=val LIMIT 1;
    
  • サーバは全ての大きいSELECT結果を1,000行に限定します。ただし、ステートメントにLIMIT節が含まれていない場合にのみです。

  • サーバは、1,000,000の行コンビネーションをチェックしかなければいけない、複数テーブルSELECTステートメントをアボートします。

1,000 と1,000,000以外の制限を特定するには、--select_limitと--max_join_sizeオプションを使用することでデフォルトを重ね処理することができあます。

shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates