之前寫的一隻 python 腳本在 MySQL 升級 8.0 之後發現出現了一個錯誤
Loading local data is disabled; this must be enabled on both the client and server sides
後來查的結果是 8.0 預設將 local data 的權限關閉了,查了一些資料大部分都說要使用 SET GLOBAL local_infile=1;
將 local_infile
的 Value
改成 on,不˙過後來修改過後還是出現同樣的訊息
修改前
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | OFF |
+---------------+-------+
1 row in set (0.01 sec)
修改後
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.01 sec)
後來又看到了一篇說要將 my.cnf 上
[client]
local_infile=1
本來以為這樣沒問題了...
結果還是跳出一樣的訊息
後來再查了一下發現除了 Server 以外 client 也要加
如果使用 mysql cli 了話就是 mysql -h xxx.xxx.xxx.xxx --local-infile=1
如果是 pymysql 則加入參數
local_infile=True
就這樣順利地可以將 csv 匯入了