次のコラムLaravelチュートリアルでは、laravelがmysを解決する方法を紹介します。 ql Only_full_group_by の問題。困っている友達のお役に立てれば幸いです。
MySQL 5.7 以降では、only_full_group_by がデフォルトで有効になり、より厳密な SQL 検出が行われ、次のエラーが報告されることになります
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'edu.t_sounds.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
方法はありませんこの問題を解決するには 回り道を避け、オンラインで見つかった方法に従って 1 つずつ試してください
解決策のアイデア
View sql_mode
select @@GLOBAL.sql_mode;SELECT @@SESSION.sql_mode
まず、mysql 設定ファイルを確認して変更します。my.cnf は非常に恥ずかしいです。my には ONLY_FULL_GROUP_BY がありません。クライアント設定に従って、[クライアント] 設定を追加します。
[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
再起動mysql、MySQL ツールで sql_mode を確認すると、表示された結果は確かに設定と同じですが、プログラムは依然として同じエラーを報告します
もう一度検索した後、突然問題に気づきました。記事の先頭にある sql_mode をクエリする 2 つのステートメントであるグローバル セッションの違いについて質問しました。
mysql 変数の設定には 2 つの方法があります。 1 つはグローバル設定で、もう 1 つはグローバルです。 、全世界に作用します; 1 つはセッション構成セッションで、現在の接続にのみ作用します
それは起こりますか? 現在の接続に sql_mode を設定しているのは laravel ですconnection.
laravel プログラムが sql_mode[client]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
を出力すると、それを設定したのはプログラムであることがわかります。
最初のこと頭に浮かぶのは mysql 設定に厳密モードがあります。私は常にそれをオンにして false に設定しています。問題はスムーズに解決されました。
$result = \DB::select('SELECT @@GLOBAL.sql_mode'); print_r($result);exit; 结果: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION $result = \DB::select('SELECT @@SESSION.sql_mode'); print_r($result);exit; 结果: 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
これで問題は解決できますが、ベースになっています。テクノロジーについては、それがどのように書かれているかを知りたいだけであり、直接 false に設定したくありません。
- vendor/laravel/framework/src/ILLuminate で strict を検索してください。 /Database フォルダーを開き、コア コードを直接見つけます。
- ファイル:vendor/laravel/framework/src/ILLuminate/Database/Connectors/MySqlConnector.php
'strict' => false,
最初の判断は、存在するかどうかを直接決定します。モード設定。その場合は、これを使用してください
protected function setModes(PDO $connection, array $config){ if (isset($config['modes'])) { $this->setCustomModes($connection, $config); } elseif (isset($config['strict'])) { if ($config['strict']) { $connection->prepare($this->strictMode($connection))->execute(); } else { $connection->prepare("set session sql_mode='NO_ENGINE_SUBSTITUTION'")->execute(); } }}
テストして、問題を直接解決してください
根本原因を探す精神で、次に読んでください。 on
Strict = trueの場合
ハードコーディングされたsql_mode、laravelはmysql 8.0.11を他のバージョンと区別します
'modes' => ['STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_pISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION'],
Then if strict = true false、sql_mode を NO_ENGINE_SUBSTITUTION に直接設定します
protected function strictMode(PDO $connection) { if (version_compare($connection->getAttribute(PDO::ATTR_SERVER_VERSION), '8.0.11') >= 0) { return "set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'"; } return "set session sql_mode='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'"; }
問題はここで完全に解決されます
最終解決策
$connection->prepare("set session sql_mode='NO_ENGINE_SUBSTITUTION'")->execute();
strict = true を維持し、mode オプションを追加します。内部のパラメータは次のとおりです。 laravel の基礎となる設定を削除しますが、ONLY_FULL_GROUP_BY
概要: 多くの回り道をし、多くの時間を費やした後、問題は最終的に解決され、何も変更する必要はありませんでした。 mysql
の設定以上がmysqlのonly_full_group_by問題を解決するlaravelについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

開発環境とエコシステムにおけるLaravelとPythonの比較は次のとおりです。1。Laravelの開発環境は簡単で、PHPと作曲家のみが必要です。 Laravelforgeなどの豊富な範囲の拡張パッケージを提供しますが、拡張パッケージのメンテナンスはタイムリーではない場合があります。 2。Pythonの開発環境もシンプルで、PythonとPIPのみが必要です。エコシステムは巨大で複数のフィールドをカバーしていますが、バージョンと依存関係の管理は複雑な場合があります。

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

laravelisabackendframeworkbuiltonphp、designforwebapplicationdevelopment.itfocusonserver-sidelogic、databasemanagement、およびapplicationStructure、およびbueithedendtechnologiesvue.jsorreactforfull-stackdevelymentと統合されていること。

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
