- 空間インデックス
- Aurora MySQL v1 独自機能で InnoDB に実装、Aurora MySQL v3 で本家 MySQL のものに置き替えられた
- SRID=0 ではオプティマイザに無視されるように
- https://dev.mysql.com/doc/refman/8.0/ja/spatial-index-optimization.html
- https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Overview.html#Aurora.AuroraMySQL.Spatial
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.MySQL80.html#AuroraMySQL.mysql80-spatial
CHECK
制約の有効化- 過去に無視された制約の定義が有効あるいはエラーに
SELECT
・UNION
パーサールールの変更- https://dev.mysql.com/doc/refman/8.0/ja/union.html#union-8-0-versus-5-7
- ロック句を含む
SELECT
ステートメントにはカッコが必要に
- ロック句を含む
- https://dev.mysql.com/doc/refman/8.0/ja/union.html#union-8-0-versus-5-7
\N
はNULL
のシノニムではなくなった
utf8mb3
が非推奨に- 現時点では MySQL 8.0 含め
utf8
はutf8mb3
のシノニム
- 現時点では MySQL 8.0 含め
utf8mb4
のデフォルト照合順序がutf8mb4_0900_ai_ci
へ- その他、フォールバックのルールなど
データ型 | 変更が加わったバージョン | 変更の概要・参考リンク |
---|---|---|
FLOAT ・DECIMAL ・DOUBLE 型(シノニム含む)のUNSIGNED 属性 |
8.0.? (D) | 非推奨 https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html#mysql-nutshell-deprecations |
FLOAT ・DOUBLE 型(シノニム含む)のAUTO_INCREMENT |
8.0.? (D) | 非推奨 https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html#mysql-nutshell-deprecations |
FLOAT(M,D) ・DOUBLE(M,D) (シノニム含む) |
8.0.? (D) | 非推奨 https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html#mysql-nutshell-deprecations |
YEAR(2) |
5.7.5 (R) | 廃止→ YEAR(4) へ https://dev.mysql.com/doc/refman/5.7/en/migrating-from-year2.html |
YEAR(4) |
8.0.19 (D) | 非推奨→ YEAR へ https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-type-syntax.html |
数値データ型の桁数指定・ZEROFILL 属性 |
8.0.? (D) | 非推奨 https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html#mysql-nutshell-deprecations |
文字列データ型のBINARY 属性 |
8.0.17 (D) | 非推奨 https://dev.mysql.com/doc/refman/8.0/ja/string-type-syntax.html 8.0.28 でASCII ・UNICODE も非推奨に https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html |
- 64 文字を超える外部キー制約名を持つテーブルは NG に
- Connector を対応バージョンに入れ替え
CREATE TABLE ... SELECT
のトランザクションの扱いが変更(8.0.21)- 行ベースレプリケーションで 1 つのトランザクションとして記録
- GTID レプリケーションの非互換
GRANT
操作の読み取りロックの変更(8.0.22)LOCK TABLES ... WRITE
による明示的テーブルロック時のinnodb_table_locks=0
無効化- トリガーなどによる暗黙的テーブルロック時は有効
- SQL モードの非推奨・削除
- 5.6.17 で非推奨、5.7 で厳密モードの動作の一部に(個別に
ERROR_FOR_DIVISION_BY_ZERO
を指定しても動作が変わらないように)ERROR_FOR_DIVISION_BY_ZERO
- 5.7.22 で非推奨、8.0 で削除
DB2
,MAXDB
,MSSQL
,MYSQL323
,MYSQL40
,ORACLE
,POSTGRESQL
,NO_FIELD_OPTIONS
,NO_KEY_OPTIONS
,NO_TABLE_OPTIONS
- https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-changes
MAXDB
削除→CREATE TABLE
・ALTER TABLE
のTIMESTAMP
型がDATETIME
として扱われなくなることを意味
- 8.0 で削除
NO_AUTO_CREATE_USER
- MySQL のデフォルト(≠ Aurora MySQL のデフォルト)からも削除(
GRANT
での暗黙のユーザ作成が廃止されたため) - https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user
- MySQL のデフォルト(≠ Aurora MySQL のデフォルト)からも削除(
- 8.0.13 で非推奨
PAD_CHAR_TO_FULL_LENGTH
- 5.6.17 で非推奨、5.7 で厳密モードの動作の一部に(個別に
- アトミック DDL 導入によるレプリケーションの挙動変化
IF EXISTS
が付かないDROP TABLE
・DROP VIEW
のレプリケーション差異
- クライアントの
--ssl
・--ssl-verify-server-cert
オプションが削除 - デフォルト認証が変わったことにより、Aurora MySQL v3 で新規ユーザを作成した場合に既存アプリケーションから接続できない可能性がある
CREATE USER
時にmysql_native_password
を指定する
- パーティショニングの実装を変更
- 基本的には Aurora MySQL での実質的な非互換は無い
KEY
パーティショニングのカラムインデックス接頭辞が非推奨に(8.0.21)
- プリペアドステートメント内のユーザー変数への参照のタイプは、ステートメントが最初に準備されたときに決定され、それ以降にステートメントが実行されるたびにこのタイプが保持されるように(8.0.22)
- ユーザ権限の評価で
@
の後ろの部分(ネットワーク・ホスト)の評価の優先度が変わった(8.0.23)- https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html#mysqld-8-0-23-connection-management
- https://qiita.com/hmatsu47/items/d3f34f39c28a4b802966#%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E5%95%8F%E9%A1%8C%E3%81%9D%E3%81%AE-1--%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%8C%E7%A7%BB%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
- 追記(2022/3/28)
- ユーザ権限の指定時、対象スキーマに
%
(ワイルドカード)のみを指定すると無視されるように - レプリケーション設定の不整合(ギャップ)にかかわる設定項目の変更(8.0.19)
- 一時テーブルの
ROW
・MIXED
形式バイナリログ記録の変更(5.7.25・8.0.4) - 管理者権限の分割(Aurora MySQL v1 → v3 変更点でもピックアップ)
- 個々の ENUM または SET カラム要素の長さが 255 文字または 1020 バイトを超えるテーブルまたはストアドプロシージャは NG に
- 以前は ENUM または SET のカラム要素の最大長 64K
- 内部一時テーブルの変更(Aurora MySQL v1 → v3 変更点でもピックアップ)
- 明示的に定義されたカラム名が 64 文字を超えるビューは NG に
- 以前は 255 文字まで許可