2

在 R 中,每当我将带有多个语句的查询传递给 sqlQuery 时,都会出现错误。例如,

sqlQuery(ch, 'DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2;')

产生错误

[1] "42000 1064 [MySQL][ODBC 5.1 Driver][mysqld-5.5.27]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE IF EXISTS t2' at line 1"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2;'"

我究竟做错了什么?

4

1 回答 1

0

首先,尝试 R 中的一个语句Drop table if exists t1;对我来说(我正在使用 Access 数据库进行测试)这失败了,表明 ODBCif exists在我的环境中不支持。MySQL Workbench 中的测试不是一个公平的比较;但是,您的构造可能适用于 RMySQL 包提供的函数。

ODBC 在很多方面都不同,所以为了测试是否可行,我通常使用 Access 通过 ODBC 连接到数据库并使用 SQL 设计器。以下内容在那里不起作用:

CREATE TABLE b (id INT PRIMARY KEY);
DROP TABLE b;

作为单独的陈述,它可以正常工作。

于 2013-03-10T10:12:21.067 回答