レガシーデータベースの中には厳密ではないモードが必要な単一のMySQL 5.7サーバがあります。しかし、私たちの最新のアプリでは、データベースに厳密さ(特にNO_ZERO_DATE
)を適用したいと考えています。データベースレベルでサーバーレベルの設定を上書きする方法はありますか? documentationによるとMySQLデータベースレベルでサーバーのSQLモードを上書きできますか?
SET SESSION sql_mode = 'modes';
:
レガシーデータベースの中には厳密ではないモードが必要な単一のMySQL 5.7サーバがあります。しかし、私たちの最新のアプリでは、データベースに厳密さ(特にNO_ZERO_DATE
)を適用したいと考えています。データベースレベルでサーバーレベルの設定を上書きする方法はありますか? documentationによるとMySQLデータベースレベルでサーバーのSQLモードを上書きできますか?
SET SESSION sql_mode = 'modes';
:
あなたはとのセッションでSQLモードを変更することができます
SESSION変数を設定するだけで、現在のクライアントに影響します。
これは、問題を解決するための回避策です。データベースでSQLモードを直接設定する方法はないと思います。また
注:
重要
SQLモードとユーザー定義のパーティショニング。パーティション化されたテーブルにデータを作成して挿入した後にサーバーのSQLモードを変更すると、そのようなテーブルの動作が大きく変更される可能性があります。はデータの損失または破損につながる可能性があります。ユーザー定義のパーティション化を使用してテーブルを作成した後は、決してSQLモードを変更しないことを強くお勧めします。
もっと安全な方法は、MySQLサーバーの2つのインスタンスを使用することです。
"より安全な方法は、MySQLサーバーの2つのインスタンスを使用することです。"ああ、それは確かに安全です。しかし、それはオプションだとは思わない – abeger