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. セマンティゼーションとは何ですか? Bing辞書の説明セマンティクス化とは、適切な HTML ...
この記事では、CSS の非常に興味深い属性マスクを紹介します。名前が示すように、マスクはマスクと翻訳...
app.js: スタートアップファイル、またはエントリファイルpackage.json: プロジェク...
目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...
覗き見の問題サーバーでは、IIS サービスが複数のサイトを展開していると仮定すると、サイトの 1 つ...
はじめに: インターフェイス デザイナーの Joshua Porter が自身のブログでこの記事を公...
1. 計算プロパティとリスナー1.1 計算プロパティ <!DOCTYPE html> &...
序文最良の方法は、あなたが思いつく最も速い方法ではないかもしれません。職場で一時的に使用するスクリプ...
通常のウェブサイトのソースコードを開くと、ソースコードは<!DOCTYPE htmlで始まる必...
[必須] ユーザーインターフェースPhotoShop/花火デザインアーティストと協力して、スケッチを...
1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...
繰り返し: サイト全体で特定のページ デザイン スタイルを繰り返します。繰り返し要素としては、特定の...
1.MySQLの複数インスタンスMySQL マルチインスタンスとは、1 台以上のマシン上で複数の M...
1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...
目次ローカルミックスイングローバル ミックスイン要約するローカルミックスイン <テンプレート&...