一般是因為my.ini的“secure-file-priv”的設置導致loaddata失敗,網上查了許多資料,大部分都是要求注釋掉my.ini的:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads
mysql5.7沒有my.ini,只有mydefault.ini,復制改一個就ok了。
注釋完不起效果,於是stack-over-flow上查看到這樣一個解決方案:
http://stackoverflow.com/questions/32737478/mysql-how-to-tackle-secure-file-priv
用命令SHOW VARIABLES LIKE "secure_file_priv";查看一下uploads設置,結果uploads文件夾壓根不存在,手動創建之。
loadfile嘗試仍然失敗。
於是想重啟mysql服務,net stop后發現mysql服務壓根沒起來,net start mysql提示無法啟動,服務器沒有報告任何錯誤。
這種情況一般是缺少data目錄,那就進入到mysql5.7的bin目錄,用mysqld --initialize重建之,出現錯誤,提示data目錄中有文件存在,可是我mysql5.7目錄下沒有文件存在啊?這種問題網上壓根找不到答案,抓耳撓腮找了半天也不知道錯誤在哪,
突然發現my.ini中有個設置:datadir=D:/MySql/data # 設置mysql數據庫的數據的存放目錄,必須是data,或者是//xxx/data
尋思有沒有可能是my.ini搗鬼,於是把my.ini改了個名字,再次mysqld --initialize,data目錄初始化成功。
net start mysql
再次報錯,無服務器沒有提示任何錯誤
於是用mysqld --console查看詳細信息,提示有服務占用了3306端口
進到系統服務里挨個看,發現有個服務名為mysql5.7,關閉掉
再次net start mysql,啟動成功。
把my.ini名字改回來,順利導入數據到表中,至此問題解決。