My SQL 中:Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
這是因為在mysql中如果想要導(dǎo)入外部格式的數(shù)據(jù)文件,比如說csv文件,就需要先把這些文件放到mysql認(rèn)為的安全路徑下,才能上傳成功。這也是出于對用戶的保護(hù)。
如果想要成功讀取外部文件,就有兩種思路。
一種思路是將csv文件放到默認(rèn)的數(shù)據(jù)安全路徑下。
第二種思路就是將數(shù)據(jù)安全路徑參數(shù)設(shè)定為空,允許導(dǎo)入任意路徑下的文件。
接下來我們先講第一種思路
如何查看你的安全路徑是哪呢?
可以按照如下的步驟操作一下:
1.點擊開始,啟動mysql程序
2.接下來查看mysql默認(rèn)的安全路徑
輸入show variables like 'secure_file_priv';
然后回車,注意這里的分號不要忘記,因為這是mysql內(nèi)部語法。
得到的結(jié)果如下圖:
可以看到安全路徑如圖所示,把要導(dǎo)入的csv文件放到這個路徑下就可以成功導(dǎo)入了。
然后我們再看第二種思路
1.我們修改配置文件
我們的配置文件是一個名字為my.ini的文件,這里面有關(guān)于眾多參數(shù)的定義
用記事本方式或者notepad++打開C:\ProgramData\MySQL\MySQL Server 8.0下面的my.ini文件,我們搜索secure(注意不要搜secure_file_priv,否則你搜不到),搜索結(jié)果如下:
# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
這里在我們的搜索結(jié)果里,我看到只有這一處出現(xiàn)了給secure-file-priv賦值的情況,其他地方?jīng)]有出現(xiàn),因此我們只需要改這一個地方的值,肯定正確,我們往上翻看,會發(fā)現(xiàn)這這個賦值是出現(xiàn)在[mysqld]的下面,如果你的這個賦值在文中多次出現(xiàn),并且有的賦值在[mysqld]下面,有的不在,那請你修改[mysqld]下面的secure-file-priv值。
我這里情況就比較簡單了,我們進(jìn)行如下修改然后保存這個文件,并且關(guān)閉這個文件。
secure-file-priv=""
注意這里僅僅是修改了這個文本文件,但這個修改還沒有真正起作用,如果你用show 命令去看變量secure_file_priv的值,還是以前的路徑值,如何讓我們這個修改生效呢。
首先打開我們的mysql服務(wù)列表,然后查看那個mysql服務(wù)是與這個my.ini文件關(guān)聯(lián)的,也就是看哪個mysql服務(wù)是根據(jù)這個my.ini文件進(jìn)行配置的。
到了mysql服務(wù)列表頁面我們選擇一個mysql服務(wù),然后右鍵點擊選擇屬性,可以看到這個服務(wù)的關(guān)聯(lián)ini文件。
2.找到目前啟動的mysql服務(wù)
如何查看你當(dāng)前的電腦啟動了哪些服務(wù),請參考我其他帖子。http://www.3lll3.cn/discuss/post/details/602f6cd4352c47611b03f1be
可以看到目前啟動的是MySQL80服務(wù),我們看下這個服務(wù)關(guān)聯(lián)的ini文件是哪個
可執(zhí)行文件的路徑取值如下:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80
從而可以看出這個mysql80服務(wù)對應(yīng)的ini配置文件,就是我們前面修改的my.ini配置文件。
3.關(guān)閉mysql(這個都知道呀),停止mysql服務(wù)(這個可以看我另一個帖子)http://www.3lll3.cn/discuss/post/details/602f57f74aa67c5afd277182
可以看到MySQL80服務(wù)已經(jīng)停止了
4.重啟mysql服務(wù)(這樣才能讓我們重新配置的參數(shù)生效,具體如何操作可以看我另一個帖子),重啟mysql。
發(fā)現(xiàn)通過執(zhí)行net start MySQL80命令無法啟動MySQL服務(wù)。
考慮到這一系列怪事都是出現(xiàn)在修改my.ini文件之后我們把我們的my.ini文件用notepad++打開,將編碼轉(zhuǎn)為ansi,然后保存關(guān)閉。
然后重新執(zhí)行。如何用notepad對文件重新編碼,可以參考我這個鏈接。http://www.3lll3.cn/discuss/post/details/5f8fd2ea7700f37ebe89e80b
這次MySQL80服務(wù)終于啟動成功了
我們再打開workbench,重新執(zhí)行一下那會執(zhí)行出現(xiàn)錯誤的代碼
可以看到這次再執(zhí)行就沒有錯誤提示了。








暫無數(shù)據(jù)