質問: 'LOCK TABLES `'.implode('` WRITE, `', $lck_tbl).'` WRITE'; でロック対象テーブルに入ってますが、 現場での話なのですが、既存のコードがあって、その既存のコードでは今まで動いてました。 その既存のコードというのが php batch.php --mode a で動く処理で、既存のコードではテーブルロックしてからロックしているテーブルをSELECTしているのですが php batch.php --mode a で間違いなくそこの処理は通っていて冒頭のようなエラーはでていません。 新規モードを作ることになり、 php batch.php --mode bで動く処理を作っています。 ほとんどコードも同じで、処理は全く同じです。 冒頭のSELECT文で説明すると これまでは、table1にもtable2にもSHOP_CDがあり、COMMON_IDもありました。 しかし、仕様が変わり、table1にはSHOP_CDはなくなりCOMMON_IDだけがある状態。table2にはSHOP_CDもCOMMON_IDもあります。 そのため既存のコードと違うところはJOINしてるところぐらいです。 原因と解決方法としてなにが考えられるでしょうか? *追記 exitなど通して色々やってみて1つわかったことがあります。 joinをせずにテーブル単体でSELECTしても同じエラーでした。 今度は joinをせずに table1 tb1のように別名をつけずに テーブル単体でSELECTするとエラーはなくなりました。 しかし、これではjoinできません。 どうすればよいでしょうか?
回答: 以下のMySQL公式ページをみたところ、 エイリアスも含めてテーブルロックを指定するようです。 確認してみては、どうでしょうか? https://dev.mysql.com/doc/refman/5.6/ja/lock-tables.html