その記事では、Ubuntuで無効にする方法を示しました。 しかしそれ以来、Adam WathanはLaravelに機能を追加しました。これにより、「厳格モード」を使用しているかどうかを判断できます。 また、使用するモードをコード全体で正確に構成することもできます。
パフォーマンスを犠牲にすることなく、サーバーを構成する代わりにアプリケーション構成を変更できる場合は、常にこのオプションを選択します。 1つの問題は、新しい環境に展開する場合の問題です。 したがって、この新しい機能に非常に満足しています。
5.7で厳密モードを無効にするだけでなく、この関数を使用できることに注意してください。 5.6に含めることができ、非常に先見の明があります。 5.6で問題なく切り替えられるように、5.6で動作するアプリケーションで厳格モードを有効にします。 だから、あなたは事前に、落ちるかもしれないすべてを理解するでしょう。
MySQL 5.7および厳密モード。
機能自体について説明する前に、「厳格モード」の意味をメモリですばやく更新しましょう。
MySQLには「モード」があり、それぞれが特定の動作を有効または無効にします。 たとえば、ERROR_FOR_DIVISION_BY_ZEROは、ご想像のとおり、SQLでゼロで除算するとエラーをスローするモードです。 このモードが無効になっている場合、単純に結果がNULLになります。
「厳密モード」は、実際には5.7に含まれる次のデフォルト設定のリストです。
ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_AUTO_CREATE_USER
NO_ENGINE_SUBSTITUTION
これらのモードの詳細については、 MySQLのドキュメントをご覧ください。
バージョン5.7より前では、デフォルトで有効になっていた唯一のモードはNO_ENGINE_SUBSTITUTIONでした。
Laravel 5.2で「厳格」モードをオン/オフします
Laravelのこの新機能のおかげで、3つのことができるようになりました。「厳格モード」を無効にし、動作<= 5.6に戻ります。 「厳格モード」を有効にして、動作5.7に設定します。 または、オンにするモードを正確に構成します。
これらのパラメーターは、connections.mysqlセクションのconfiguration / database.phpにあります。 始めるために、「strict」モードのオン/オフを見てみましょう。
'connections' => [ 'mysql' => [ // MySQL 5.6 'strict' => false, // MySQL 5.7 'strict' => true, ] ]
モードの微調整
しかし、デフォルトの5.6および5.7モードに慣れていない場合はどうでしょうか? 自分で設定するだけです。
'connections' => [ 'mysql' => [ // , strict 'modes' => null, // , strict 'modes' => [], // , strict 'modes' => [ 'STRICT_TRANS_TABLES', 'ONLY_FULL_GROUP_BY', ], ] ]
それだけです
これで、サーバー構成に触れることなく、コードに含めるMySQLモードを完全に制御できるようになりました。
デフォルトでは、「厳格」モードを完全にオンにすることをお勧めします。 しかし、モードを微調整する必要がある場合、特定のケースや古いプロジェクトが存在する可能性がありますが、今ではそれが可能だけでなく、非常に簡単です!