我有一个名为df
的数据框,如下所示:
dte, val
2012-01-01, 23.2323
2012-01-02, 34.343
列上的类型是日期和数字。我想使用已经打开的连接将其写入MySQL数据库。连接工作正常,因为我能够查询db罚款。我尝试运行以下内容:
dbWriteTable(con, name="table_name", value=df, field.types=list("date", "double(20,10)"))
这会产生错误:
函数错误(classes,fdef,mtable):无法为函数“make.db.names”找到继承的方法,签名为“MySQLConnection”,“NULL”
如果我没有指定field.types,请运行:
dbWriteTable(con, name="table_name", value=df)
我收到错误:
mysqlExecStatement(conn,statement,...)出错:RS-DBI驱动程序:(无法运行语句:密钥规范中使用的BLOB / TEXT列'dte'没有密钥长度)
任何人都可以对此有所了解吗?
由于
答案 0 :(得分:28)
在玩完东西之后,我意识到问题所在:field.types
必须是NAMED list 向量,而不仅仅是列表;此外,不得包含行名称,否则我们需要三种字段类型。对于上面的示例,以下工作正常:
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)
答案 1 :(得分:-1)
那是因为表名。 mysql表名不要使用大写字母。