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 の実装原則の詳細な説明
レムの簡単な分析まず、remはCSS単位です。pxの固定ピクセル単位と比較すると、remはより柔軟性...
今日は、サイトの設定やウェブサイトのアップロードなど、FlashFXP の最も基本的な機能を紹介しま...
Jenkins はオープンソース ソフトウェア プロジェクトです。Java をベースに開発された継続...
概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...
コンテナログを表示するまず、 docker run -it --rm -d -p 80:80 ngi...
1. my.iniファイルにskip-grant-tablesを追加し、MySQLサーバーを再起動し...
目次1. 従来のコレクションに対するフィルター、マップ、および削減処理方法2. 再帰処理3. for...
ページ上でショートカットキーをカスタマイズする要件に遭遇し、ショートカットキーを設定して表示する場所...
環境システム: Ubuntu 18.04ソフトウェア: qt5.12.8 1. インストールパッケー...
目次基本的なHTML構造div とクラス名のショートカット キーを生成するクラス名を持つdiv ID...
序文この記事では、div の幅を 100% に設定し、親要素を超えてパディングまたはマージンを設定す...
時々、素敵なスクロールバー効果を見るのは楽しいものです。ここでは、CSSを使用してそれを実現する方法...
目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...
CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...
この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...