yoku0825 さんが、面白そうなブログを書いていました。 yoku0825.blogspot.com MySQLの auto_increment 列は キーカラムである必要がありますが、このキーは複合キーでも構わない。ただし 複合キーの場合は、InnoDB ではキー指定のうちの1つめのカラムである必要があり、MyISAMなら2つめ以降のカラムでも良い、という違いがあるそうです。 mysql> create table tt1 (c1 integer auto_increment, c2 integer, c3 integer, key(c2, c1, c3)) engine=innodb;…
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
TL;DR
-
SELECT table_schema, table_name, column_name, seq_in_index FROM information_schema.statistics WHERE (table_schema, table_name, column_name) IN (SELECT table_schema, table_name, column_name FROM information_schema.columns WHERE extra LIKE '%auto_increment%') AND (table_schema, table_name, column_name) NOT IN (SELECT DISTINCT table_schema, table_name, column_name FROM information_schema.statistics WHERE seq_in_index = 1); - 無理にSQLでどうにかしなくても、
mysqldump --no-dataで引っこ抜いてsed 's/MyISAM/InnoDB/'してテキトーなところにリストアしてみればいいと思うよ
…
[さらに読む]既報のとおり、7月上旬に『MySQL徹底入門第4版』が出版されました。ありがたいことに、出版記念のイベントを求める声もちらほらいただいていたのですが、主に私自身が MySQLユーザ会のイベントを多く主催したりしていることもあって、ユーザ会として自分たちの本の宣伝めいたものを開催するのは、やや気が引けるなぁと悩んでいました。折しも、ニフクラさんが定期的に開催している「ニフクラ エンジニア ミートアップ」としてやったらどうかとのお誘いをいただき、その中でやらせていただくことができました。#nifcloud_emup のみなさま、どうもありがとうございました。fujitsufjct.connpass…
TL;DR
-
mysql.role_edgesテーブルとmysql.default_rolesテーブルがマスターとスレーブでズレる- マスターでは登録されるけどスレーブでは登録されない
- つまりスレーブでは「そのロールを使う権限もそのロールがデフォルトロールである情報も失われる」
- See MySQL Bugs: #93252: Default role is not logged into
the binary log
- Fixed in 8.0.18
8.0.15を使ってレプリケーションを組んでいたらハマった。
バイナリログへの記録がそもそもおかしいことになる。
mysql> SELECT @@version;
+-----------+
| @@version |
+-----------+
| 8.0.17 |
+-----------+
1 row …[さらに読む]
Bugs
基本的にMySQL Server, 5.7以上のbug fixのみまとめます
Bug #100259 decimal returned function value overflow when group by
- …
TL;DR
- 本気でDEBUG_SYNC使いたい人はそもそもこっち読むべき
DEBUG_SYNCとは、デバッグビルドのmysqldの中だけでブレークポイントみたいなものを設定して、ブレークポイントに差し掛かったら他のコネクションを使って操作を試してみられる…と思ってもらえれば多分大丈夫。
ただし任意の箇所でブレークできるわけではなく、コードの中に埋め込まれた “synchronization points”
の場所にだけ仕掛けられる。以下、わかりやすさ優先で ブレークポイント と呼ぶことにする。
基本的な使い方はこんな感じ。
- …
コロナ禍のあおりを受けて新機能が少なくなった MySQL 8.0.21 の新機能の 1 つ、JSON_VALUE()をちょっとだけ試します。
(まあ、本来ならマイナーバージョンで新機能の追加をすること自体が普通じゃないんですけどね。マイナーバージョンアップの都度新機能が加わる状況でも、Oracle さんは「メンテナンスリリース」と言い張っている謎。あ、これは dis りなどではなくて、お約束のネタです。)
JSON_VALUE()とは?
公式リファレンスマニュアルの説明にあるとおり、従来の
CAST() AS JSON_UNQUOTE() JSON_EXTRACT()
の組み合わせを 1 つの関数として、
JSON_VALUE(json_doc, path RETURNING type)
の形式で記述することができるようになったものです。
CAST() AS が不要な場合は、
…
[さらに読む]