これはsql_mode = only_full_group_byと互換性がありません

こんにちは、私はChenxiです。この記事を読んでとてもうれしく思います。この記事では、プロジェクトで発生した問題(開発プロセス中のmysqlバージョンの非互換性が原因で発生する問題)を整理します。共有して新しい知識を得て、みんなで一緒に進歩することができます!

最近のプロジェクト開発は明らかに他の人のコンピューターに出くわしました。私のコンピューターでのローカルテストはそのような問題です

....this is incompatible with sql_mode=only_full_group_by

mysql5.7のローカルでの使用についてお話しましょう

ここに画像の説明を挿入
問題が発生?

mysql5.7.xバージョンの最新バージョンをダウンロードしてインストールします。デフォルトではonly_full_group_byモードを開くようになっていますが、このモードはオンになってgroup byおり、エラーに関する元のステートメントはそれから削除されました。

オープンしたらonly_full_group_by、彼らが感じる、group byとなり、distinct唯一それらの影響を受け、フィールド情報を得ることができ、かつ共存による影響を受けなかった、そうではない他のフィールドgroup byの機能は非常に狭くなり、

only_full_group_by モードをオンにすることをお勧めします。

mysql関数があるためany_value(field)許可は非パケットフィールドを表示します(オフonly_full_group_byモードでも同じ効果があります)。


異常なコンソールの問題を解決するには?

最初に実行

select @@global.sql_mode;

ここに画像の説明を挿入
クエリすると、実際にはonly_full_group_byが前にあることがわかり、この行をコピーして、この構成パラメーターを削除します。

次に実行します

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

短所:mysqlが再起動すると、上記の実行は失敗します


もちろん、この問題を完全に解決したい場合は、構成ファイルを変更する必要があります。インターネット上の多くの解決策を参照してください...

最後に、mysqlの基本的な起動とシャットダウンをまとめます。

----启动MySQL
mysqld --defaults-file=/etc/my.cnf &
mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
service mysql start
/etc/init.d/mysql start
mysqld_multi start #多实例
net start mysql #Windows
 
 
----关闭MySQL
mysqladmin -uroot -plhr -S /tmp/mysql3306.sock shutdown
service mysql stop
/etc/init.d/mysql stop
mysqld_multi stop #多实例
net stop mysql #Windows
 
 
--杀死mysql
killall mysqld
killall -9 mysqld

ここに画像の説明を挿入

2020.09.18みなさん、あなたの恋に行きますように!

おすすめ

転載: blog.csdn.net/weixin_45393094/article/details/108674353