我有一个在 MariaDB 10.0.35 上完美执行的 SQL 查询,但在 MariaDB 10.4.12 上因语法错误而失败。我试图联系他们,但他们告诉我查看论坛并比较从 10.0 到 10.4 的变更日志。我真的没有时间浏览几十个变更日志文件,试图找出有什么不同,特别是因为它们的文档似乎与我正在做的事情兼容。这是查询:
(SELECT 'Name','Address1','Address2', 'City', 'State', 'Zip', 'Phone', 'SSN', 'Credit Card', 'County', 'Comment', 'Company')
UNION (
SELECT name, address1, address2, city, state, zip, phone, ssn, credit_card, county, comment, company
FROM testcust
WHERE type = '0'
ORDER BY name
INTO OUTFILE '/tmp/sellers.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ','
LINES TERMINATED BY '\r\n'
);
我什至尝试重新安排它以将 INTO OUTFILE 子句放在 FROM 之前(如示例中所示):
(SELECT 'Name','Address1','Address2', 'City', 'State', 'Zip', 'Phone', 'SSN', 'Credit Card', 'County', 'Comment', 'Company')
UNION (
SELECT name, address1, address2, city, state, zip, phone, ssn, credit_card, county, comment, company
INTO OUTFILE '/tmp/allcustomers.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ','
LINES TERMINATED BY '\r\n'
FROM testcust
ORDER BY name
);
但这没关系。(顺便说一下,这两个版本都适用于 10.0。)
这是来自 MariaDB 10.4.12 的错误:
ERROR 1064 (42000):您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在“INTO OUTFILE '/tmp/allcustomers.csv' 附近使用的正确语法”
这是 MariaDB 的“INTO OUTFILE”文档: MariaDB 文档页面 ,其中有以下示例:
SELECT customer_id, firstname, surname INTO OUTFILE '/exportdata/customers.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM customers;
我在 /etc/my.cnf.d/secure_file_priv.cnf 中禁用了secure_file_priv:
[server]
# secure_file_priv = /var/lib/mysql-files
secure_file_priv = ""
我找不到为任何想要导入 SQL 文件以使用上述查询进行测试的人附加 SQL 文件的方法,但很乐意根据请求发送它(除非我只是错过了如何附加文件)。
我对此完全不知所措,似乎找不到他们文档的不同版本来查看是否真的存在语法差异——我只能假设他们的在线文档是最新版本的。
我真的很感激任何人能够给予我的任何启示......
利用