MySQL から完全にforkしてしまったmariaDB

最近のリレーショナル DB は geometry とか json とか使えるようになりましたが、MySQL と mariaDB でかなり仕様差があり、互換性がないという事態に陥ったので記録しておきます。

問題となるのは① geometry で2地点間の距離を求める場合。
MySQL v7.0 以降は ST_Distance_Sphere 関数があるが、mariaDBにはない。
地球楕円体から自分で計算するか、ST_Glength を使って度を算出し、それから km に直す必要がある。

②JSON カラムの初期値を MySQL は設定できないように見えるが、mariaDB は自由に設定できる。例えば

colmn json not null default '[]'

という構文を、mariaDB は許可するが、MySQL は許可しない。

そのうち統一されるのでしょうか、差異があるまま成長してしまうのか、注目しています。

Windows のシステムロケールではまる

MariaDB を utf8mb4 で使用しているにもかかわらず、

mysql -u user db <data.sql

という構文で cp932 エラーが発生。なんで??

Google 先生に聞いても良く分からなかったが、どうも CMD が CP932 になっているせいではないかということに思い当たり、

https://kuluna.github.io/blog/post/20180512/

を参考にして、CMD を UTF-8 にしてみたらうまく動いていた。

ファイルをオープンする時にコードチェックするなんて、Windows10、何て仕様なんだ…。