* 仮説 [#b95a24f4] 初めに、断っておくが、このページは、仮説である。 オラクルは、企業であり、フリーのMySQLをよく思ってないのではないだろうか? だから、MySQLを買収し、コントロールしようとしてているのではないだろうか? どのようにMySQLをコントロールしようとしているのだろうか? MySQLの評価を下げ、Oracleの優位をアピールするのがOracle社の利益につながると仮定する。 そのため、企業に非がないよう、利用者にはわからないように、 罠をしこんでいるという仮説を立ててみる、いけてないMySQLのデフォルト設定を監視する 自分は、以下のものがそうなのでは?と仮説を立てている。 * Javaインストール時の環境変数 [#vc8d4e93] * 裏付ける事例 [#d05e42b8] ** Javaインストール時の環境変数 [#vc8d4e93] C:\Program Files (x86)\Common Files\Oracle\Java\javapath を仕込む 優先的に、自社のJava.exeを読み込むようなしくみ? とりあえず、Spring Bootの開発環境である、stsを起動させなくする仕組みのようだ。 sts.iniの-vmオプションの設定よりも、優先的に働くようになっている。 削除しておこう。 * MySQLのデフォルトのトランザクション分離レベルが、楽観的ロックに、向いていないレベルになっている。 [#u8cc9cb7] ** MySQLのデフォルトのトランザクション分離レベルが、楽観的ロックに、向いていないレベルになっている。 [#u8cc9cb7] spring boot つかってて、そう思った。 システム作るときに、一番最初に、この仕組みを検証した、レイヤーをちゃんと実装してから、横展開しないと、あとで、きずいて、カッコ悪い設計になるぞ。 * MySQL5.7から日付のミリ秒対応がなされたが、ここでオラクルはデフォルトでミリ秒は切り捨てではなく、四捨五入して値を格納するようにしてしまった。 [#x0878a24] ** MySQL5.7から日付のミリ秒対応がなされたが、ここでオラクルはデフォルトでミリ秒は切り捨てではなく、四捨五入して値を格納するようにしてしまった。 [#x0878a24] ** 対策 [#be32e237] *** 対策 [#be32e237] これに対応するには、DB格納前に、ミリ秒を切り捨てにする実装にしないと、59:59.999が00:00.000として登録されて、秒数不一致になってしまう。