【问题标题】:How to resolve this error--dbWriteTable()如何解决此错误--dbWriteTable()
【发布时间】:2015-05-13 09:12:45
【问题描述】:

我成功连接到 MYSQL DB 并尝试将结果写回数据库:dbWriteTable(con,"predicted min",forecast$min) 其中 forecast$min 只是双精度向量。

我收到此错误消息:

(函数(类,fdef,mtable)中的错误: 找不到签名“MySQLConnection”、“character”、“numeric”的函数“dbWriteTable”的继承方法

我想我的第三个参数需要一个数据框对象,所以我尝试了这个:dbWriteTable(con,"predicted min",data.frame(min=forecast0.1$min))

但是得到了这个错误:

.local(conn, statement, ...) 中的错误: 无法运行语句:您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '( row_names text, min双 )' 在第 2 行

我正在使用 SQLyog。我不知道这是否与这个问题有关。有什么建议么?提前致谢。

苏菲

【问题讨论】:

    标签: mysql r


    【解决方案1】:

    SQLyog 与此问题无关。如果您的表格只有一列(分钟),那么您无需将数据框的行名写入表格。试试:

    dbWriteTable(con,"predicted min",data.frame(min=forecast0.1$min), row.names = FALSE, append = TRUE)
    

    否则,您要将具有两个值的元组插入到具有一列的表中。如果该表已经存在并且您不想覆盖该表,您还应该拥有append = TRUE

    edit:表名中不应有空格。

    【讨论】:

    • 嗨@Josh,它仍然给了我第二条错误消息,SQL 语法错误。
    • 你总是可以把你自己的 INSERT 语句放在一起。即,query = sprintf("INSERT INTO %s (min) VALUES (%d)", tablename, forecast0.1$min)。然后sqlQuery(channel, query)。并为每一行执行此操作。这假设表已经存在。您还确定您的表名中有空格吗?不确定这是否可行。
    • 感谢您的提醒。表名(应该没有空格)给了我错误。谢谢你,@Josh
    • 好的,很高兴为@Sophie 提供帮助。我编辑了原始答案以反映它是表名。如果有效,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 2012-02-14
    • 2015-04-12
    • 2016-06-21
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多