在R-getting中使用MySQL试图将变量作为列返回时出错

在R-getting中使用MySQL试图将变量作为列返回时出错,mysql,r,Mysql,R,我已经使用dbConnect和RMySQL包成功地用R连接到我公司的数据库。但是,我在R中运行查询时遇到了一个令人沮丧的错误。该查询在我每天使用的MySQL Workbench应用程序中工作,因此在R中无法工作令人沮丧。下面是SQL查询的一个片段: USE mydb; SELECT @theDate := '2017-05-03'; SELECT @theDate AS today, a.user_id AS user_id, ... ... 这是查询的前

我已经使用dbConnect和RMySQL包成功地用R连接到我公司的数据库。但是,我在R中运行查询时遇到了一个令人沮丧的错误。该查询在我每天使用的MySQL Workbench应用程序中工作,因此在R中无法工作令人沮丧。下面是SQL查询的一个片段:

USE mydb;
SELECT @theDate := '2017-05-03';

SELECT
    @theDate AS today,
    a.user_id AS user_id,
    ... 
    ... 
这是查询的前几行,也是导致R中错误的查询部分。我收到以下错误:

my_query = "    USE mydb;
SELECT @theDate := '2017-05-03';

SELECT
    @theDate AS today,
    a.user_id AS user_id,
    ... 
    ... "

my_db = dbConnect(MySQL(), ...)
requested_query = dbSendQuery(my_db, my_query)

Error in .local(conn, statement, ...) : 
  could not run statement: 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 'SELECT
           @theDate AS today,
           a.user_id AS user_id,' at line 3
抱歉,我无法提供更多可复制的代码,但这将涉及连接到公司数据库,我无法共享数据库信息

最后一条评论-我相信这行代码与SELECT@theDate:=“2017-05-03”有关;线路。这个查询是由我的同事编写的,而不是我自己,我以前从未在查询中看到过这样使用两个select语句。MySQL Workbench应用程序中发生的事情是@theDate本质上是一个设置为“2017-05-03”的变量。查询返回的表的第一列全部为“2017-05-03”

正如我所说,该查询在MySQL Workbench中工作,但在R中不起作用。非常令人沮丧。任何建议都将不胜感激

谢谢


编辑-在试图理解设置变量在SQL中的工作方式时,认识到这更像是一个问题。就像我说的,我以前没有见过这个,但是第一个SELECT查询设置了一个变量,然后第二个SELECT查询使用了这个变量。允许这样做吗?我想知道为什么MYSQL Workbench中允许它,而不是R。。。仍然令人沮丧

我相信在一个
dbSendQuery()
调用中不能执行多个sql查询,这会导致错误消息

分别执行这两个查询,或在第二个select中为会话变量赋值:

SELECT @theDate := '2017-05-03' AS today, ....

您能在dbsendquery()函数中执行2条sql语句吗?我不能回答您的问题,但请查看RODBC包[,也许这解决了你的问题。当我尝试接收查询结果时,我也遇到了一个问题,我只获取了数据帧。但是当数据帧有点大时,并不是所有的行都加载到R中。但是这个打包解决了我的问题,直到现在,MySQL Workbench中运行的每个查询都在R中工作