ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

MySQL

MySQL (InnoDB) とトランザクション分離レベル・ロック

(注記) 去年書いて下書き状態になってた記事をそのまま公開した。 MySQL 8.0 公開前に書いた内容なので MySQL 5.7 について言及しているが、多分 MySQL 8.0 でも基本的には変わらない気がする。 背景・目的 DB 上に指定の ID の行が存在していれば UPDATE し…

PostgreSQL と H2 Database の両方で使える SEQUENCE 値生成方法 (MySQL の AUTO_INCREMENT 的なやつ)

SQL DB に新しい行を挿入したときに自動的に ID 値を生成して欲しいことはままある。 このような処理をしてくれるテーブル定義についての話。 MySQL だと AUTO_INCREMENT を使いがち MySQL を使ってる場合は AUTO_INCREMENT で済ませちゃうことが多い (H2 Da…

MySQL Connector/J 5.1 系では useLegacyDatetimeCode=false にしよう

JDBC で MySQL に接続するときに使用する MySQL Connector/J (mysql:mysql-connector-java) の話。 サーバー・クライアントのタイムゾーン設定が違っている場合にどう対応するのがいいか。 結論 MySQL Connector/J 6 (まだ開発版だけど) 以降は自動でやって…

MySQL では GROUP BY 句を使用した場合でも集約されていない列を結果に含めることができる

表題どおり。普通、SQL で GROUP BY 句を使用して SELECT する場合、結果に含めることができる列は GROUP BY 句に含まれる列か集約関数 (aggregate functions) を適用した列のみです。 しかし、MySQL の場合はそうではなく、GROUP BY 句にも含まれていないし…