MySQL バッチ挿入の問題 プロジェクトを開発しているときに、古いシステムの基本データを事前にインポートする必要があったため、インポート中にバッチインポート操作を実行しました。ただし、MySQL で許容される SQL ステートメントのサイズが制限されているため、一度に 500 しかバッチ処理できないにもかかわらず、挿入できません。このとき、コードは次のエラーを報告します。
エラー レポートによると、SQL ステートメント データ パケットが大きすぎることがすぐにわかります。この問題を解決するには、MySQL サーバー パラメータ max_allowed_packet を設定できます。 解決 1. [mysqld] の下に max_allowed_packet パラメータを追加し、できるだけ大きく設定します。 #my.cnf ファイルを探す#my.cnf はどこにあるか #vim マイ.cnf ---------------------------- [mysqld] 最大接続数 = 3000 最大許容パケット=1024M #保存してmysqlサービスを再起動して有効にします#service mysqld restart 2. max_allowed_packetを一時的に設定し、ステートメントで設定します。 myslq>グローバルmax_allowed_packetを1024*1024*1024に設定します このように再起動すると、max_allowed_packetは無効になります デフォルトでは、MySQL パラメータ max_allowed_packet の値は 1M です。 MySQLインデックスは大文字と小文字を区別しません MySQL データベースでインデックスを作成する場合、デフォルトでは大文字と小文字は区別されません。たとえば、次のステートメント: テーブル `location` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT, `rc` varchar(2) デフォルト NULL コメント 'R/C', `location_code` varchar(4) デフォルト NULL コメント '場所コード', `location_name` varchar(30) DEFAULT NULL COMMENT '場所名', `zip_code` varchar(6) デフォルト NULL コメント '郵便番号', `address` varchar(50) デフォルト NULL コメント 'アドレス', `link_man` varchar(15) DEFAULT NULL COMMENT '連絡先', `link_phone` varchar(30) DEFAULT NULL COMMENT '連絡先電話番号', `fax` varchar(30) デフォルト NULL コメント 'Fax', `can_accept_car_time` varchar(40) DEFAULT NULL COMMENT '利用可能な車のピックアップ時間', `type` varchar(1) デフォルト NULL コメント 'カテゴリ', `maintenance_type` varchar(1) DEFAULT NULL COMMENT 'メンテナンスタイプ', `brand` varchar(4) デフォルト NULL コメント 'ブランド', `reservation` varchar(40) デフォルト NULL コメント 'Reservation', `enable` int(1) デフォルト '1', `msg_code` varchar(64) NOT NULL COMMENT 'メッセージコード', `receive_on` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '受信日', `create_on` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成日', `modified_on` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '変更日', 主キー (`id`)、 ユニークキー `unique_msg_code` (`msg_code`) BTREE 使用、 ユニークキー `unique_location_code` (`location_code`) BTREE の使用 ) ENGINE=InnoDB AUTO_INCREMENT=16325 DEFAULT CHARSET=utf8 COMMENT='アドレステーブル'; しかし、アドレス コード H12C と h12C をそれぞれ挿入すると、エラーが報告され、例外がスローされました: キー 'normal_localtion_code' のエントリ 'H12C' が重複しています。これは大文字と小文字が区別されないことを意味するため、この問題を解決する必要があります。 回避策 1. インデックスで大文字と小文字が区別されるように、フィールドをバイナリに設定します。 テーブル `location` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT, `rc` char(2) デフォルト NULL コメント 'R/C', `location_code` varchar(4) 文字セット utf8 照合 utf8_bin デフォルト NULL コメント '場所コード', `location_name` varchar(26) DEFAULT NULL COMMENT '場所名', `zip_code` varchar(6) デフォルト NULL コメント '郵便番号', `address` varchar(50) デフォルト NULL コメント 'アドレス', `link_man` varchar(16) DEFAULT NULL COMMENT '連絡先', `link_phone` varchar(30) DEFAULT NULL COMMENT '連絡先電話番号', `fax` varchar(30) デフォルト NULL コメント 'Fax', `can_accept_car_time` varchar(40) DEFAULT NULL COMMENT '利用可能な車のピックアップ時間', `type` varchar(1) デフォルト NULL コメント 'カテゴリ', `maintenance_type` varchar(1) DEFAULT NULL COMMENT 'メンテナンスタイプ', `brand` varchar(4) デフォルト NULL コメント 'ブランド', `reservation` varchar(40) デフォルト NULL コメント 'Reservation', `enable` int(1) デフォルト '1', `msg_code` varchar(64) NOT NULL COMMENT 'メッセージコード', `receive_on` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '受信日', `create_on` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成日', `modified_on` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '変更日', 主キー (`id`)、 ユニークキー `unique_msg_code` (`msg_code`) BTREE 使用、 ユニークキー `unique_location_code` (`location_code`) BTREE の使用 ) ENGINE=InnoDB AUTO_INCREMENT=4092 DEFAULT CHARSET=utf8 COMMENT='ロケーションテーブル'; // 元のテーブル辞書の属性を変更します: ALTER TABLE `location` 変更列 `location_code` `location_code` VARCHAR(4) 文字セット 'utf8' BINARY NOT NULL DEFAULT ''; 上記の方法で問題は解決します。 クエリでは大文字と小文字は区別されません 回避策 1. クエリステートメントにバイナリを追加する 2. インデックス ソリューションと一致して、フィールド属性をバイナリに設定します。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: URLに基づいてリクエストを転送するnginxの実装の実践経験
>>: JavaScript における call、apply、bind の実装原則の詳細な説明
最近、ビジネス側から、一部のユーザー情報の挿入に失敗し、エラー メッセージが「不正な文字列値:&qu...
目次序文1. 準備2. 実際の戦闘2.1 ミニプログラムの権限を設定する2.2 カプセル化ツールの機...
ステップ1: MySQLドライバをダウンロードするcmdは作成されたDjangoプロジェクトディレク...
この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...
目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...
目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...
springmvc による Spring の統合Spring 統合 springmvc の web....
目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...
この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...
HTML で長いデータを表示する場合、マウスをその上に移動するとデータを切り捨てて完全なデータを表示...
この記事では、スライダー検証コードを実装するためのJavaScriptの具体的なコードを参考までに共...
目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...
目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...
ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...