MySQL でファイルデータをインポートする際の 1290 エラーの解決方法

MySQL でファイルデータをインポートする際の 1290 エラーの解決方法

エラーシナリオ

cmd の mysql コマンドを使用して、学生情報テーブルにデータを追加します。データを一括で簡単にインポートするには、データのロード メソッドを使用します。

テキストデータ(xueshengxinxi.txt ファイル)を準備します。タブキーを使用してデータを区切ります。

「ファイルのテキスト データ パスをテーブル tab_load_data にロードする」を実行すると、エラーが表示されます。

#load data (データのロード) 構文、データをロードするには次のようになります。
 1 張三南 江西 1
 2 李思南 四川 2
 3 王武南 上海 1
 4 趙 六宇 湖北 3
 5 孫 7 娘 湖北 3
 6 周八南湖南1 

#テストデータテーブル create table tab_load_data (
  id int auto_increment 主キー、
  名前varchar(10),
  性別列挙型('男性','女性'),
  ネイティブvarchar(10)、
  f5 整数
 ); 
エラーの説明

ロード データを使用してファイル データをインポートすると、常に次のエラー (エラー 1290.....) が表示されます。

エラー 1290 (HY000): MySQL サーバーは --secure-file-priv オプションで実行されているため、このステートメントを実行できません

解決策のアイデア(プロセス)

1) エラー メッセージは secure-file-priv オプションが実行されており、ロード サービスを実行できないことを示しているため、MYSQL 構成ファイル「my.ini」で構成項目を見つけます。

2) 設定の前にMySQLサービスをシャットダウンします

3) my.ini を開き、キーワード「secure-file-priv」を検索してこのオプションを見つけ、このオプションをコメントアウトして保存し、MYSQL サービスを開始します。

4) 結果は依然として同じエラーです。説明 コメントは効果がありません。どうしたの?

「show variables like '%secure%'」コマンドを実行し、コメントアウトした後、 secure-file-priv の値が NULL になり、インポートとエクスポートが禁止されていることが示されました。

つまり、コメントアウトしても機能しません。構成ファイルのエントリを削除したくない場合は、ディレクトリを変更する必要があります。

5) パスを変更し、「show variables like '%secure%'」コマンドを実行して表示し、MYSQL を再起動します。


6) 再度データのロードを実行すると、実行は成功します。

より複雑な負荷の使用については、MySQL マニュアルを参照してください。 この時点で問題は解決します。

3. まとめ

この間違いから学びましょう:

1) データのロード: 外部のメモ帳ファイルからテーブルにデータをインポートできます。

このメモ帳のデータは、通常、「比較的整然としている」ことが求められ、1 行のテキストが 1 行のデータに対応し、行内の各フィールドの値を区切るために特定の文字 (タブなど) が使用されます。

2) secure-file-priv パラメータは、データのインポートおよびエクスポート操作の影響を制限するために使用されます。

たとえば、LOAD、SELECT...INTO OUTFILE ステートメントと LOAD_FILE() 関数を実行します。これらの操作にはファイル権限が必要です。

3) secure-file-priv パラメータがディレクトリ名に設定されている場合、MYSQL サービスでは、このディレクトリ内でのみファイルのインポートおよびエクスポート操作の実行が許可されます。

このディレクトリは存在している必要があります。MYSQL サービスはこれを作成しません。

4) secure-file-priv パラメータが NULL の場合、MYSQL サービスはインポートおよびエクスポート操作を禁止します。

以下もご興味があるかもしれません:
  • JavaはMYSQL LOAD DATA LOCAL INFILEを使用して大量のデータをMySQLにインポートします。
  • MySQL のロードデータステートメントによって発生するデッドロックを解決するケーススタディ
  • MySQL の Load Data レコードにおける改行の問題の解決方法
  • mysql ロード データ インファイルの使用 (40w のデータを mysql にインポートするのに 3 ~ 5 秒かかりました)
  • MySQLでデータをロードする方法
  • mysql データの読み込み infile
  • mysql Load Data InFile の使用
  • MySQL データベース データのロード 複数の用途

<<:  Linux で jar パッケージを起動してバックグラウンドで実行する方法

>>:  JavaScriptのモジュール性を理解する方法

推薦する

JavaScript オブジェクトの 3 つのプロパティ

目次1. 書き込み可能: 書き込み可能2. 列挙可能: 列挙可能3. 設定可能: 設定可能オブジェク...

MySQLが日付フィールドインデックスを使用しない理由の要約

目次背景探検する要約する背景テーブルでは、dataTime フィールドは varchar 型に設定さ...

MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

序文長い間、MySQL のアプリケーションおよび学習環境は MySQL 5.6 以前のバージョンであ...

vue+px2rem(rem適応)を使用してPCで大画面適応を実装するためのサンプルコード

構成の序文プロジェクト構築: vue-cli3 をベースに構築、rem 適応には postcss-p...

MySQL マスター/スレーブ ステータスを監視するシェル スクリプト

Linuxでシェルスクリプトを共有して、MySQLのマスタースレーブ状態を監視し、エンタープライズW...

CocosCreator最適化DrawCallの詳細な説明

目次序文ドローコールとはDrawCall はパフォーマンスにどのような影響を与えますか?ドローコール...

画像ブラインド表示の効果を実現するための純粋な CSS の例

まず、完成した効果をお見せしましょう 主なアイデア: 実際、このブラインドは一種の手品を使用していま...

Navicateを使用してAlibaba Cloud Server上のMySQLに接続する

1. まず、サーバーの mysql にアクセスして権限を変更します。 GRANT オプション付きで、...

CSS3で作られたレインボーボタンスタイル

結果: 実装コード: html <div class="buttons"&...

Vue のスロットの使用法と適用シナリオの詳細な分析

スロットとは何ですか? Vue では、子コンポーネント タグの中央に何もラップできないことはわかって...

Docker で Python スクリプトを実行する方法

まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...

Linux での MySQL 8.0 インストール チュートリアル

この記事では、LinuxでMySQL 8.0をインストールする方法を紹介します。具体的な内容は次のと...

Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...

モバイルデバイスで 1 ピクセルの境界線の問題を解決するいくつかの方法 (5 つの方法)

この記事では、モバイルデバイス上の 1 ピクセルの境界線の問題を解決する 5 つの方法を紹介します。...

Dockerプライベートウェアハウスレジストリの導入

使用される Docker イメージが増えるにつれて、イメージを保存する場所、つまりウェアハウスが必要...