初心者にとって、使いやすいスタートアップオプションは--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;
Session System Variables を参照してください。
SET
ステートメントには以下の効果があります。
UPDATE
や
DELETE
ステートメントは、WHERE
節内でキー制限を特定するか、LIMIT
節を提供するか (あるいは両方)
しないかぎり、実行は許容されません。例
:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_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