1. デフォルトのエンコーディング セットの問題
フロントエンド データを表示すると、すべての select * from t_news が見つかります。すべてのコンテンツが見つかります。 。そうなると、クエリをパラメータ化するときに機能しなくなります。例:
Select * from t_news where title like ‘%Source Code Education%’; 0 個のデータが見つかりました。
id = 1 の t_news から * を選択します。 1件のデータが見つかりました。
赤でマークされたフィールドに注目してください。これは変更後のものです。これらは元々は latin1 でした。
解決策:
Windows での MySQL の構成ファイルは my.ini で、通常はインストール ディレクトリのルート ディレクトリにあります。
Linux での MySQL の構成ファイルは my.cnf で、通常は /etc/my.cnf、/etc/mysql/my.cnf に配置されます。見つからない場合は、find コマンドを使用して見つけることができます。
my.ini/my.cnf を開き、次の 2 つのフィールドを変更します。
Ps: 設定ファイルを変更した後は、mysql を再起動する必要があります。
2. データはロールバックされません
プログラミング中に Spring はトランザクションを設定しますが、例外が発生すると、データベース内のデータは依然として変更されます。トランザクションやコード構成に問題がないことを確認した上で、データベースの特化を検討します。テーブルの設計には「Navicat」ツールを使用します。「オプション」列で、テーブルで使用されているストレージ エンジンが MyISAM であることがわかります。
MyISAM はトランザクションをサポートしていません。ロールバックすると不完全なロールバックが発生し、アトミックではありません。
MyISAM を InnoDB に変更します。
MySQL 構成ファイル (my.ini) にはデフォルトのストレージ エンジンもあります。テーブルの作成時に特別なステートメントがない場合は、デフォルトのストレージ エンジンが使用されます。
3. 大量のデータのインポートを最適化する
私たちの仕事では、必然的に大量のデータをインポートする状況に遭遇します。たとえば、以前にバックアップしたデータをクエリしたり、テストのために実際のデータをローカルにインポートしたり、データをバックアップ データベースに定期的にインポートしたり、その他のビジネス シナリオを実行する必要があります。
MySQL は、データを infile にロードするインポート メソッドを提供します。ただし、設定が不適切だとインポート速度が遅くなります。
解決策:
次のパラメータ値を増やします (通常は物理メモリの 80%)。ただし、32 ビット システムは 2 ~ 3.5G に制限されます。
4. カスタム関数 function (クラウド データベース) を有効にする
他の人のコードを実行するとき、またはサーバーを移植するときに、以前に定義されたデータベースの関数に遭遇することがあります。は使用できません。特にデータベースの場合、デフォルトでは関数機能が有効になっていないため、関数が実行されません。
まず、機能が有効になっているかどうかを確認します。以下に示すように:
ここでのカスタム関数機能はデフォルトではオフになっています。
解決策: 「set global log_bin_trust_function_creators = 1;」を使用して、カスタム関数機能を有効にします。
クエリを再度実行してください:
ただし、この方法はゼロタイムの解決策にすぎません。MySQL が再起動されると、この機能はデフォルトでオフになります。
カスタム関数機能を永続的に有効にするには、設定ファイルに「log-bin-trust-function-creators=1」を追加する必要があります。
5. Linux 環境におけるテーブル名の大文字と小文字の問題
Linux システム環境では、MySQL テーブル名はデフォルトで大文字と小文字が区別されます。テーブル名に大文字が誤って入力されると、クエリが見つからないことがあります。
解決策: my.cnf 構成ファイルの最後に「 lower_case_table_names=1 」を追加します。次に、MySQL を再起動します。
" lower_case_table_names=1 "この文は、入力ステートメントを強制的に小文字にしてからステートメントを実行することを意味します。