MySQLのストリクトモードを無効にする方法

いくつかの 内容 Typo、Contao、Contenidoなどの管理システムでは、 sinceの問題があります。 MySQL 5.1 利用可能なストリクトモード。これはバージョン5.7からデフォルト設定になっています。

これらのCMSシステムを使用できるように、サーバー側で厳格なモードをオフにすることも可能です。もちろんこれは条件付きでしかお勧めできません。

ストリクトモードは何をしているのか?

MySQL/MariaDB の strict モードは、INSERT、UPDATE、CREATE 宣言を含むデータ変更クエリにおいて、無効な値や欠落した値がどのように処理されるかを制御します。

無効または欠落している データ SQL クエリの実行時に警告やエラーが発生することがあります。Scrictモードがオフになっている場合は、無効なクエリや欠落している値が調整され、簡単な警告が表示されます。そのため、思わぬ結果を招くことがあります。

例としては、文字数制限が挙げられます。Strictモードをオフにすると、余計な文字がカットされて収まるようになります。

なぜ一部のCMSシステムでしか発生しないのですか?

推測するしかない。おそらく、誰にも理解できないほどコードが広範囲にわたっているのでしょう。乗っていると コンテンツ管理システム 多くの人が働いていて、中には何年も見向きもされないような個別の機能を持ち込む人もいます。深刻な問題がなければ、それほど悪くはないと思います。

whmcsのようなシステムも影響を受けていると、状況はかなり違ってきます。重要なデータが切り捨てられていると、誤った代入が発生します。示談の場合に問題になることがあります。

これらの指示はどこで適用できますか?

このマニュアルでは、MySQL 5.6/5.7 または MariaDB 10.1 と、ストリクトモードがアクティブな場合はそれ以上の値になります。

変更を行うには、ルートアクセスが必要です。私たちの指示は常に以下を参照してください。 セントスリナックス.他のディストリビューションでは、設定ファイルは他のディレクトリにあるかもしれません。

ステップ1:バックアップを作成する

ファイルを編集するときは、必ずバックアップを取るようにしましょう。意図せずに削除してしまうのは、あまりにも早すぎます。

cp -a /etc/my.cnf{,.strict.bak}.

コマンドは、同じディレクトリにあるmy.cnfからmy.cnf.strict.bakファイルを作成します。

ステップ2:MySQLのストリクトモードを無効にする

ファイルには通常 sql_mode=... が含まれていないので、セクションに次の行を追加します。 [mysqld] :

sql_mode=""

ステップ3:MySQLサービスの再起動

ファイルを編集した後、変更を適用するにはサービスを再起動する必要があります。

systemctl restart mariadb

サービス再起動後、以下のコマンドを実行することで設定を確認することができます。ここでは、パスワードが Plesk サーバ.または、rootとパスワードを使用します。

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"

すると、次のようなリターンが表示されるはずです。

+————+

sql_mode | @@sql_mode | @@sql_mode | @@sql_mode | @@sql_mode

+————+

| |

+————+

現在の記事