Cloud SQL のバージョン設定失敗したー
だいぶ前にテストサイトで立てたものが mysql 5.5 だったから now(6) も datetime(6) もできず悶絶。
再構築し直すかなーとも思ったけど、同じ名前のインスタンス名使えないし証明書も取りなおしだし、pom変えたり開発者にやってもらわなきゃだし色々悶絶。てかめんどくさい。
簡単に差し替えられればいいのになー。
本番機は5.6にしてあったので実際に実機につなげて実行すると超イイ感じに取れてる。
mysql> select now(6); select now(6); select now(6); +----------------------------+ | now(6) | +----------------------------+ | 2014-12-04 11:12:48.364338 | +----------------------------+ 1 row in set (0.24 sec) +----------------------------+ | now(6) | +----------------------------+ | 2014-12-04 11:12:48.605135 | +----------------------------+ 1 row in set (0.24 sec) +----------------------------+ | now(6) | +----------------------------+ | 2014-12-04 11:12:48.846039 | +----------------------------+ 1 row in set (0.24 sec)
同じ文内では同じナノ秒の結果が返る。ま逐次取るのは無駄だしってことね。
mysql> select now(6), now(6), now(6); +----------------------------+----------------------------+----------------------------+ | now(6) | now(6) | now(6) | +----------------------------+----------------------------+----------------------------+ | 2014-12-04 11:17:28.418656 | 2014-12-04 11:17:28.418656 | 2014-12-04 11:17:28.418656 | +----------------------------+----------------------------+----------------------------+ 1 row in set (0.24 sec)
5.5のテスト機では無視されるし列も作れないし辛い。
mysql> create table hoge(t datetime(6)); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6))' at line 1 mysql> select now(6); +---------------------+ | now(6) | +---------------------+ | 2014-12-04 11:23:51 | +---------------------+ 1 row in set (0.22 sec)
そういえば、macのローカルで System.nanoTime() とると末尾常に 000 なんですけど。
結局ミリ秒までしかサポートしてないのね。
ミリ秒でいいからとりあえず無駄にlong値の列仕込むしかー。とほほ。