2026.04.23

MySQL

MySQL 9.7.0(リリース日:2026年4月21日)

アトミックDDL関連

  • ファイルシステム上に該当するディレクトリが存在しない場合でも、データベースを削除できるようになり、データベースの一貫性が維持されます。(バグ #38711166)
  • sql_generate_invisible_primary_key=ONの場合、UNIQUE NOT NULLキーが存在する場合でも、生成された非表示プライマリキー (GIPK) がテーブルに追加されました。一意キーが自動インクリメントされている場合、GIPKの作成は失敗しました。
    このリリース以降、CREATEおよびALTERステートメントでは、UNIQUE NOT NULLキーはプライマリキーと同等として扱われます。(バグ #38195294)
  • mysqlbinlogの出力の適用は、#で始まるコメントが直後に続くCREATE TABLE ... START TRANSACTIONの実行中に失敗しました。以下のようなエラーが返されました:
    ERROR 3977 (HY000) at line 117: Only BINLOG INSERT, COMMIT and
    ROLLBACK statements are allowed after CREATE TABLE with START
    TRANSACTION statement.

    (バグ #36313112)

  • SQL_REQUIRE_PRIMARY_KEYが有効になっている場合、プライマリキーに相当する値を持つテーブルを作成できませんでした。以下のようなエラーが返されました:
    ERROR 3750 (HY000): Unable to create or change a table without a primary key,
    when the system variable 'sql_require_primary_key' is set. Add a primary key
    to the table or unset this variable to avoid this message. Note that tables
    without a primary key can cause performance problems in row-based
    replication, so please consult your DBA before changing this setting.

    (バグ #31402520)

  • 仮想列を含むテーブルでは、LOCK=NONEを使用して列を削除することはできませんでした。(バグ #83557、バグ #24962142)

監査ログ関連

  • 特定のgzipファイルの処理に関する問題を修正しました。.gzヘッダーのチェックを緩和するようにMySQLサーバーを更新することで、通常のgzipファイルを処理できるようにしました。以前は以下のようなエラーが返されていました:
    Invalid audit log file content

    (バグ #38980223)

  • システム変数 audit_log_prune_secondsに関する問題を修正しました。audit_log_prune_secondsを設定できるようになりました。audit_log_prune_secondsが、log_offload.log_analytics_scheduleやaudit_log_rotate_on_timeなどの他のシステム変数の値に基づいて特定のしきい値を超えないようにするためのチェックが追加されました。(バグ #38941456)
  • 経過時間に基づいて監査ログファイルをローテーションする新機能を追加しました。この機能は、新しい変数 audit_log.rotate_on_timeによって制御されます。(WL #17213)
  • 監査ログは、無効なフィルタ設定からの自動リカバリをサポートするようになりました。これにより、テーブルに無効なフィルタが見つかった場合でもサーバーが起動できるようになります。今回のアップデートでは、無効なフィルタ設定が検出された場合、起動時にメモリ上でデフォルトのフィルタ(すべてのイベントをログに記録するフィルタ)に置き換えられ、監査アクティビティの損失を防ぎます。この機能は、グローバル変数 audit_log.filter_recovery_mode(または、監査ログプラグインの場合は audit_log_filter_recovery_mode)によって制御され、ユーザーはLOG_ALL_IF_INVALID_FILTER_DETECTED、LOG_NOTHING_IF_INVALID_FILTER_DETECTED、ABORT_IF_INVALID_FILTER_DETECTEDの3つのリカバリモードから選択できます。この機能強化により、監査ログ設定の管理における柔軟性と信頼性が向上し、運用上の問題のリスクが軽減され、重要な監査データが失われることがなくなります。
    詳細については、audit_log.filter_recovery_modeおよびaudit_log_filter_recovery_modeを参照してください。 (WL #17179)

認証関連

  • 認証がCaching_sha2_passwordを使用したPBKDF2ストレージ形式に対応し、セキュリティと柔軟性が向上しました。今回のアップデートにより、PBKDF2とSHA512を併用できるようになり、既存の形式からの移行がスムーズになるとともに、より強力なセキュリティが保証されます。この変更により、ユーザーはクライアント側の変更を必要とせずに新しいストレージ形式に切り替えることができ、管理者はセキュリティ強化のために推奨ストレージ形式を強制的に適用できます。全体として、この機能強化はパスワード保護を強化し、より堅牢な認証エクスペリエンスを提供します。
    詳細については、Caching SHA-2 Pluggable Authenticationを参照してください。(WL #17160)

コンパイル関連

  • 付属のzlibライブラリがバージョン1.3.2にアップグレードされました。(バグ #38987448)

コンポーネント関連

  • 以下のコンポーネントは、これまでMySQL Enterprise Editionでのみ利用可能でしたが、MySQL Community Editionでも利用できるようになりました:
    • Replication Applier Metrics Component
    • Group Replication Flow Control Statistics Component
    • Group Replication Resource Manager Component
    • Group Replication Primary Election Component

    (WL #17234、WL #17235、WL #17236、WL #17237)

  • テレメトリコンポーネントは、これまでMySQL Enterprise Editionでのみ利用可能でしたが、MySQL Community Editionでも利用できるようになりました。
    Telemetryを参照してください。(WL #17224)

設定関連

  • Microsoft Windows: Windowsでは、MySQL Configuratorは--named-pipe-full-access-groupで定義されたグループ名を検証しませんでした。
    このリリース以降、グループが存在しない場合はエラーが返されます。(バグ #38068986)

データディクショナリ関連

  • テーブルの文字セットを変更すると、日付と時刻データ型の列はデータディクショナリとSDIの両方で変換されます。しかし、SDIの新しいcollat​​ion_idがFieldオブジェクトのcollat​​ion_idと一致しませんでした。
    このリリース以降、ALTER TABLE CONVERT TO CHARACTER SETは、データディクショナリまたはSDIに格納されている時間型の文字セットを変更しません。サーバーは、データディクショナリとSDIの時間型に対して常にmy_charset_latin1を使用します。
    (バグ #114830、バグ #36574259)

SQL関数と演算子関連

  • DEFAULT()関数に関する問題を修正しました。(バグ #39057054)

GTIDを使用したレプリケーション

  • 新しい変数 replica_allow_higher_version_sourceが導入されました。これにより、より高いバージョンのソースからより低いバージョンのレプリカへのレプリケーションを有効または無効にすることができます。(WL #17202)

InnoDB関連

  • InnoDB: マルチバリューインデックスに関する問題を修正しました。(バグ #39040128)
  • InnoDB: 特定の状況下で、cgroupsのメモリ制限が非常に高い値に設定され、かつ --innodb-dedicated-server=ONの場合、MySQLが起動に失敗する可能性がありました。(バグ #37944614)
  • 大規模テーブルのFTSインデックス構築時のメモリ使用量が最適化されました。(バグ #39040226)
  • dict_sdi_create_idx_in_mem関数が、想定とは異なる順序で列を追加し、compressed_lenフィールドとuncompressed_lenフィールドが入れ替わっていました。(バグ #38810801)
  • 特定の状況下で、--innodb_parallel_read_threadsに高い値を指定してCREATE INDEXを実行すると、ディスク容量が不足し、ディスク容量枯渇を引き起こす可能性がありました。(バグ #38370155)
  • TRUNCATE TABLEに関する問題を修正しました。(バグ #38169053)
  • 特定の状況下で、インデックスレコードの最大サイズを計算する時に、アサーションエラーが発生する可能性がありました。 (バグ #85060、バグ #25579578)
  • MySQL Serverは、cpuset cgroupを使用して設定されたリソース制限の処理をサポートするようになりました。これにより、cgroup内で実行されているアプリケーションに一連のCPUを割り当てるメカニズムが提供されます。このアップデートにより、サーバーはcpuset-cpus cgroupコントローラーによって設定された制限を遵守できるようになり、MySQL Serverで使用可能な論理CPU数を正確に計算できるようになります。この機能強化により、サーバーがcgroupの制限に基づいて論理CPU数を正しく判断できるようになるため、ユーザーはパフォーマンスの向上とリソースの効率的な利用を期待できます。(WL #16851)
  • MySQL Cloneプラグインは、9.7.0より新しい連続するLTSバージョン間でのクローン作成をサポートするようになりました。
    Clone Plugin LimitationsおよびRemote Cloning Prerequisitesを参照してください。(WL #16520)

JSON関連

  • JSONスコープ内でmonthname関数を使用すると、アサーションエラーが発生しました。以下のようなエラーが返されました:
    Assertion `mtime.time_type == MYSQL_TIMESTAMP_DATE in JSON

    (バグ #38980997)

  • MySQL Community Serverは、JSON Duality Viewsに対するDML操作をサポートするようになりました。これにより、ユーザーはこれらのビューに対して挿入、更新、削除操作を実行できます。この機能強化により、以前はCommunity ServerエディションでDDL操作に限定されていたJSON Duality Viewsの機能が拡張されます。このアップデートにより、ユーザーはMySQL Community ServerでJSON Duality Viewsの機能を最大限に活用できるようになり、データを柔軟かつ効率的に管理・操作することが容易になります。
    詳細については、DML Operations on JSON Duality Viewsを参照してください。(WL #17246)
  • MySQLは、JSON二面性ビューでのDML操作において自動インクリメント列の使用をサポートするようになりました。これにより、より柔軟で効率的なデータ管理が可能になります。今回のアップデートにより、プライマリキーに自動生成された値を活用できるようになり、JSON二面性ビューへのデータ挿入が容易になります。システムはこれらの値の生成を自動的に処理するため、データ挿入プロセスが効率化され、手動による介入の必要性が軽減されます。この機能強化により、JSON二面性ビューを使用するユーザーにとって、よりシームレスで直感的な操作性が提供され、様々なシナリオでのデータ管理と操作が容易になります。(WL #17056)

オプティマイザー関連

  • クエリ管理に関する問題を修正しました。(バグ #38928287)
  • メモリ管理に関する問題を修正しました。(バグ #38573278)
  • TIMEDIFF()は、最初の引数がDATETIMEで、2番目の引数がDATEの場合に誤った結果を返しました。(バグ #38181443、WL #16895)
  • TIMEDIFF()は、サポートされていない値が使用された場合にNULLを返しませんでした。(バグ #38179658、WL #16895)
  • FROM_DAYS()は、範囲外の値、または366未満の値を正しく処理しませんでした。(バグ #38177844、バグ #38177993、WL #16895)
  • DAYNAME()は、算術式で使用された場合、曜日名を返さず、代わりに曜日番号を返しました。 (バグ #38177821、WL #16895)
  • ADDDATE()関数は、最初の引数が年0000の場合、誤った結果を返しました。(バグ #38177766、WL #16895)
  • DATE型の値をINTEGER型の列にコピーすると、DATE型の値がDATETIME型に拡張され、00:00:00が追加されました。(バグ #38043311)
  • オプティマイザのSQLプランナーに関する問題を修正しました。(バグ #35634700)
  • 日付演算におけるオーバーフロー処理が改善されました。(バグ #32019977)
  • 年列のCAST()が誤った結果を返しました。(バグ #29616536、バグ #35093107、WL #16895)
  • 特定の状況下で、ALLOW_INVALID_DATES sql_modeが有効になっている場合、無効な日付が正しく処理されず、NULLに設定しても警告が出力されませんでした。(バグ #20583945、WL #16895)
  • バックグラウンドヒストグラム更新中にエラーや警告が発生した場合、診断領域の条件がクリアされず、以降のバックグラウンドヒストグラム更新で同じ古い条件がエラーログに出力されました。
    (バグ #119922、バグ #38983545)
  • IN演算子は、リスト内の値のいずれかがNULLの場合、予期しない結果を返しました。(バグ #119650、バグ #38831745)
  • 日時の比較は、値の格納に使用される型(INTまたはBIGINT)によって一貫性がありませんでした。(バグ #119136、バグ #38819341、WL #16895)
  • 特定の状況下では、INTERSECTが誤った結果を返す可能性がありました。(バグ #117911、バグ #37804715)
  • ANALYZE TABLE UPDATE HISTOGRAM ON col_nameで生成されたヒストグラムは、uint32の範囲外の値を持つbigintの列に基づいて構築されている場合、ANALYZE TABLE UPDATE HISTOGRAM ON col_name USING DATA ...では受け入れられませんでした。
    (バグ #116611、バグ #37269033)
  • get_quick_record_count()で範囲を構築する時に、constテーブルおよび以前に結合されたテーブルの条件が常に考慮されませんでした。これは、特に範囲述語がconstテーブルまたは以前に結合されたテーブルの値に依存している場合、最適ではない、または不正確な範囲推定につながる可能性がありました。
    (バグ #112737、バグ #35912840)
  • MySQLでbigint列に日付値を割り当てると、明示的な型変換が使用されない限り、値の末尾にゼロが追加されてしまうという問題が発生しました。右辺が単一の値または列である場合、割り当て操作における自動型変換のサポートが追加されました。(バグ #79563、バグ #22353325、WL #16895)
  • ハイパーグラフオプティマイザがMySQL Community Editionで利用可能になりました。
    以下のいずれかの方法で有効化できます:

    • セッションスコープ:SET optimizer_switch='hypergraph_optimizer=on|off'
    • グローバルスコープ:SET GLOBAL optimizer_switch='hypergraph_optimizer=on|off'
    • 永続スコープ:SET PERSIST optimizer_switch='hypergraph_optimizer=on|off'
    • サーバー起動時:mysqld --optimizer-switch='hypergraph_optimizer=on|off'
    • ステートメントごとのヒント:/*+ SET_VAR(optimizer_switch='hypergraph_optimizer=on|off') */

    (WL #17265)

パッケージング関連

  • SLE/openSUSEおよびFedoraでのRPMビルドにおいても、rpmbuildコマンドラインに--define=with_pgo 1を追加することで、PGO(プロファイルガイド最適化)を使用したビルドがサポートされるようになりました。(バグ #38915967)
  • OpenSSLライブラリがバンドルされているプラ​​ットフォームについては、MySQL Server用のリンクされたOpenSSLライブラリがバージョン3.5.5に更新されました。詳細については、OpenSSL 3.5 Series Release Notesを参照してください。(バグ #38867109、WL #17209)

バグ修正

  • 情報スキーマの権限に関する問題を修正しました。(バグ #35243416、バグ #37387633)

MySQL 9.7.0 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/9.7/en/news-9-7-0.html


MySQL Editions

MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。