1. 程式人生 > 資料庫 >mysql遇到load data匯入檔案資料出現1290錯誤的解決方案

mysql遇到load data匯入檔案資料出現1290錯誤的解決方案

錯誤出現情景

  在cmd中使用mysql命令,學生資訊表新增資料。使用load data方式簡單批量匯入資料。

  準備好文字資料: xueshengxinxi.txt 檔案 資料之間以tab鍵進行分割

  執行 “load data infile 文字資料路徑 into table tab_load_data” 彈出錯誤。

#load data (載入資料)語法,要載入資料如下:
 1 張三   男  江西 1
 2 李四   男  四川 2
 3 王五   男  上海 1
 4 趙六   女  湖北 3
 5 孫七   女  湖北 3
 6 周八   男  湖南 1 

#測試資料表
 create table tab_load_data (
  id int auto_increment primary key,name varchar(10),sex enum('男','女'),native varchar(10),f5 int
 ); 
錯誤描述

  使用load data 匯入檔案資料總是彈出錯誤(Error 1290.....)如下:

  ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    

解決思路(過程)

  1) 既然錯誤提示說明運行了secure-file-priv這個選項,不能執行load服務,那就找到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)再執行load data, 執行成功

  

  更復雜的load用法可以檢視mysql手冊。 到此,該問題解決。

三, 小結說明

  從本錯誤中吸取:

  1) load data : 可以從一個外部的記事本檔案中匯入資料到某個表中。

    該記事本中的資料通常要求“比較整齊”,一行文字對應一行資料,一行中用某種字元(如用tab符)來分割一個一個欄位的值

  2) secure-file-priv這個引數用來限制資料匯入和匯出操作的效果。

    如:執行LOAD,SELECT...INTO OUTFILE語句和LOAD_FILE()函式。這些操作需要file許可權。

  3)如果 secure-file-priv這個引數設為一個目錄名,MYSQL服務只允許這個目錄中執行檔案的匯入和匯出操作。

    這個目錄必須存在,MYSQL服務不會建立它。

  4) 如果secure-file-priv這個引數為NULL,MYSQL服務會禁止匯入和匯出操作。