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 の実装原則の詳細な説明
目次1. JavaScript とは何ですか? 2. JavaScript は何に使用されますか? ...
理由は、すべてのファイルが utf8 でエンコードされているためです。ファイルがインクルードされると...
この投稿では、キャンバスとドラッグ可能なノード インターフェースを使用するデスクトップおよび Web...
jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...
Tomcatログの関係一枚の写真は千の言葉に値する! localhost.{yyyy-MM-dd}....
明確な意味: distinctive は、一意のレコードの数を照会するために使用されます。つまり、d...
この記事は、2018 年 9 月 19 日に Adobe Systems Inc で開催された ...
目次序文1. リクエスト内容が大きすぎる解決: CDN の紹介リクエストリソースを圧縮する1. HT...
この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...
以前、「Web ページにシステムに組み込まれていないフォントを埋め込む」という研究をしたことがありま...
https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...
nginx は弊社で最もよく使用されるサーバーで、コンテンツ配信やリバース プロキシによく使用されま...
1. まず、CSS3 のターゲット セレクターを使用し、a タグを使用して id セレクターを指定し...
目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...
本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...