MySQL 5.1.30を使用して、

phpMyAdminのバージョン3.0.1-rc1を使用しているのです、
一行だけ変更すると以下のWarningが出ます。

1 行変更しました。
Warning: #1592 Statement is not safe to log in statement format.

このWarningを出ないようにするには、実行するSQLの後ろにLIMIT 1 とかが付いているため
出るのですが、UPDATEする際にこのLIMITを付与しないように
するにはどうしたらいいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2009/01/09 13:22:23
  • 終了:2009/01/16 13:25:02

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/01/09 15:10:13

ポイント35pt

UPDATE文の末尾にLIMIT句が入るのは正しい構文ですが、複合テーブルになっていると言うことはないですよね。

また、別のテーブルについても同様のエラーが出ますか?

id:hopefully

http://lists.mysql.com/commits/44178

> Statement-based replication of DELETE ... LIMIT, UPDATE ... LIMIT,

> INSERT ... SELECT ... LIMIT is not safe as order of rows is not

> defined.

通常、テーブル上の行は特定の順番に並んでいるとは限りません。

よって、ORDER BY 句を指定しない場合、

「初めに見つかった3行をUPDATEせよ」というSQLは、

マスターとスレーブで「初めに見つかった3行」が

違う行だった場合、不整合を起してしまうためだと思われます。

ここの事ですね・・・

2009/01/09 16:57:20
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/01/09 20:52:39

ポイント35pt

どうやら MySQL 5.1.30 のバグのようですね。

公式サイトの「Bug #41980」を参考にしてください。報告されたばかりです。

id:hopefully

ありがとうございます。

うーーん、なんとかWarning避けたいんですよねーー。

早くバージョンアップするの待ちますかね・・・

いつ頃になるんだろう・・・

2009/01/10 23:14:50
  • id:pahoo
    > 初めに見つかった3行をUPDATEせよ

    phpMyAdminのGUIでレコード更新しているのですよね?
    となると、発行されるSQLは "UPDATE ... LIMIT 1" になっているはずですが(これは文法的に正しく、手元のphpMyAdminでも正常実行されています)、"LIMIT 3" となることがあるのですか?
  • id:hopefully
    LIMIT 1 となってしまうのです。

    確かに文法的には正しいのですが
    なぜかWarningが出るんですよ。。。
  • id:chuken_kenkou
    「文法的に正しい」から、warningなのです。
    「文法的に不正」なら、syntaxエラーになります。

    「文法的に正しい」が、操作される行が「不定」であったり、「全件」になる場合に、warningが出ます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません