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 の実装原則の詳細な説明
最近、顧客のフッターメールボックスにクリックして送信するメール機能を追加しました。Baidu で検索...
MySQL スロー ログは、MySQL DBA やその他の開発および運用担当者が細心の注意を払う必要...
目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...
目次ナンセンス文章最初ルーター/index.js 2番目1. プラグインをインストールする2.mai...
目次1. まずMySQLサーバーを停止する2. MySQLサーバーをアンインストールする3. MyS...
背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...
ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、fo...
1. 問題MySQL の初期化時に発生する問題は、次のとおりです。 1. 「MSVCR120.dll...
目次1. はじめに2. スケジューラの基本概念2.1. 実行キュー (rq) 2.2 スケジューリン...
1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...
コードをコピーコードは次のとおりです。 window.location.href="zcb...
コンテナが企業の IT インフラストラクチャに欠かせない要素となっていることは間違いありません。コン...
SASS で定義された変数では、後で設定された値によって古い値が上書きされます。 $色: 赤; $色...
誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...
目次空の文字列 '' と null を比較するケース1: 空の文字列を使用する ...