Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mã lỗi:1290. Máy chủ MySQL đang chạy với tùy chọn --secure-file-priv nên nó không thể thực thi câu lệnh này

Một câu trả lời nhanh, không yêu cầu bạn chỉnh sửa bất kỳ tệp cấu hình nào (và hoạt động trên các hệ điều hành khác cũng như Windows), là chỉ cần tìm thư mục mà bạn được phép lưu vào sử dụng:

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)

Và sau đó đảm bảo rằng bạn sử dụng thư mục đó trong SELECT của mình của câu lệnh INTO OUTFILE mệnh đề:

SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
    FIELDS TERMINATED BY '#'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'

Câu trả lời ban đầu

Tôi đã gặp vấn đề tương tự kể từ khi nâng cấp từ MySQL 5.6.25 lên 5.6.26.

Trong trường hợp của tôi (trên Windows), khi xem dịch vụ Windows MySQL56 cho tôi thấy rằng tệp tùy chọn / cài đặt đang được sử dụng khi dịch vụ khởi động là C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini

Trên linux, hai vị trí phổ biến nhất là /etc/my.cnf hoặc /etc/mysql/my.cnf .

Mở tệp này, tôi có thể thấy rằng secure-file-priv tùy chọn đã được thêm trong [mysqld] nhóm trong phiên bản MySQL Server mới này với giá trị mặc định:

secure-file-priv ="C:/ ProgramData / MySQL / MySQL Server 5.6 / Uploads"

Bạn có thể nhận xét điều này (nếu bạn đang ở trong môi trường phi sản xuất) hoặc thử nghiệm với việc thay đổi cài đặt (gần đây tôi đã phải đặt secure-file-priv ="" để vô hiệu hóa mặc định). Đừng quên khởi động lại dịch vụ sau khi thực hiện các thay đổi.

Ngoài ra, bạn có thể thử lưu đầu ra của mình vào thư mục được phép (vị trí có thể khác nhau tùy thuộc vào cài đặt của bạn):

SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/report.csv'
    FIELDS TERMINATED BY '#'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'

Phổ biến hơn là có các giá trị phân tách bằng dấu phẩy bằng cách sử dụng FIELDS TERMINATED BY ',' . Xem ví dụ bên dưới (cũng hiển thị đường dẫn Linux):

SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    ESCAPED BY ''
    LINES TERMINATED BY '\n';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhập tệp sql vào cơ sở dữ liệu bỏ qua các dòng X trong tệp?

  2. MySQL InnoDB:Sự khác biệt giữa `FOR UPDATE` và` LOCK IN SHARE MODE`

  3. Máy chủ ảo WAMP không hoạt động

  4. Kết quả N tuyệt vời nhất của MySQL với các bảng tham gia

  5. Loại trừ các giá trị nhất định khi chia giá trị cố định cho các quốc gia dựa trên chia sẻ doanh thu hàng ngày