MySQLさんからColumn not foundって言われているけど、ログを見る限りそのカラムはSQLのどこにも出現しない

MySQLおじさんたちの水晶玉デバッグ
33
どぅーあき @do_aki

@i_rethi @yoku0825 ちなみに以前はまったサーバサイドプリペアステートメントの罠はこちらです slideshare.net/do_aki/2014101… (MySQL ではなく、 mysqlnd が原因)

2016-11-08 18:15:44
yoku0825 @yoku0825

@do_aki @i_rethi おととしのぺちかんでバイナリープロトコル使われたやつですよね! (おぼえてます!

2016-11-08 18:16:18
どぅーあき @do_aki

@yoku0825 @i_rethi サーバサイドプリペアステートメントは鬼門やで……

2016-11-08 18:17:55
Ryuta Kamizono @kamipo

ARのように SELECT * するプリペアードステートメントをキャッシュして使いまわすORマッパーを使ってるとカラムをDROPするALTERができないやつやな…

2016-11-08 18:20:30
とみたまさひろ🍣🍺 @tmtms

なにこれこわい。5.0 限定? / “MySQLさんからColumn not foundって言われているけど、ログを見る限りそのカラムはSQLのどこにも出現しない - Togetterまとめ” htn.to/BjGGEi2Zw

2016-11-08 18:21:44
Ryuta Kamizono @kamipo

select list にカラム全部明示的に書いてないとカラムDROPできんやないか

2016-11-08 18:21:47
どぅーあき @do_aki

@tmtms yoku さんが見つけたのは 5.6 のコードなので、おそらく 5.6でも発生するかと

2016-11-08 18:22:47
Ryuta Kamizono @kamipo

ALTERするときは常にMHA的アプローチを取ればいいのか

2016-11-08 18:28:11
ITOH Hiroyuki @i_rethi

@tmtms @do_aki 同じようにやったけど、5.7.16ではOKでした(gistをまた更新) gist.github.com/hiroi10/ab2e96…

2016-11-08 18:30:20
Ryuta Kamizono @kamipo

なんか言霊がとどいて消えた

2016-11-08 18:30:37
yoku0825 @yoku0825

5.7で起きない…だと…?

2016-11-08 18:32:54
yoku0825 @yoku0825

うわほんとだナニコレ

2016-11-08 18:34:14
Ryuta Kamizono @kamipo

MySQL 5.7以外MySQLじゃないの

2016-11-08 18:35:32
yoku0825 @yoku0825

よし、追いかけるのをやめよう

2016-11-08 18:37:04
達人が教えるつぶあん🇺🇦 @kazeburo

これって、普通のalterやpt-online-schema-change風なswapでも起きるのかな

2016-11-08 18:37:12
fujiwara @fujiwara

“MySQLさんからColumn not foundって言われているけど、ログを見る限りそのカラムはSQLのどこにも出現しない - Togetterまとめ” htn.to/XENkxAKXjc

2016-11-08 18:40:05
ITOH Hiroyuki @i_rethi

あれ、5.6も大丈夫っぽい・・・?(下の方に5.6を更に追加) gist.github.com/hiroi10/ab2e96…

2016-11-08 18:40:44
Ryuta Kamizono @kamipo

とりあえずぼくはこのPRを作ってるときに@statements.clearの1行が抜けてるのに気づかなくてテストでテーブル作ったり消したりで破滅的な挙動をしまくってプリペアードステートメントがキャッシュされるとヤバイという学びを得た github.com/rails/rails/pu…

2016-11-08 18:42:03
Ryuta Kamizono @kamipo

ARのmysql2 adapterのプリペアードステートメント、1回目は即closeされて2回目はrevertされて3回目でちゃんとmergeされたので思いのほかがんばって実装されてる。

2016-11-08 18:47:50
yoku0825 @yoku0825

てことは参照コード間違ってるのかー。

2016-11-08 18:54:02