RMySQL:as.character.default() 中的错误:
RMySQL: Error in as.character.default() :
我正在尝试在 R 中使用以下函数:
heritblup <- function(name) {
library(RMySQL)
library(DBI)
con <- dbConnect(RMySQL::MySQL(),
dbname ="mydab",
host = "localhost",
port = 3306,
user = "root",
password = "")
value1 <- 23;
rss<- paste0 ("INSERT INTO namestable
(myvalue, person)
VALUES ('$value1', '",name,"')")
rs <<- dbGetQuery (con, rss)
}
heritblup("Tommy")
但我不断收到此错误:
Error in as.character.default()
: no method for coercing this S4 class to a vector Called from:
as.character.default()
我试图将粘贴功能更改为:
rss<- paste0 ("插入名称表
(我的价值,人)
VALUES ($value1, ",name,")")
错误仍然存在;
我不知道怎么了。
请帮忙
代码中的几个问题。我不确定 OP 是在尝试 insert
数据库中的记录还是从数据库中获取。
假设,根据查询,他希望在数据库中插入数据 table。
规则是在 R
中准备查询的方式与在 MySQL 中执行的方式相同。值替换(如果有的话)应该在 R
中执行,因为 MySQL 引擎不会对来自 R
的变量有任何想法。
因此,查询准备步骤应按以下方式完成:
rss <- sprintf("INSERT INTO namestable (myvalue, person) VALUES (%d, '%s')", value1, name)
# "INSERT INTO namestable (myvalue, person) VALUES (23, 'test')"
如果数据插入是目标,那么 dbGetQuery
不是每个 R 文档的正确选项,而是 dbSendStatement()
应该用于数据操作。帮助中的参考建议:
However, callers are strongly encouraged to use dbSendStatement() for
data manipulation statements.
基于该查询执行行应该是:
rs <- dbSendStatement(con, rss)
ret_val <- dbGetRowsAffected(rs)
dbClearResult(rs)
dbDisconnect(con)
return(ret_val)
我正在尝试在 R 中使用以下函数:
heritblup <- function(name) {
library(RMySQL)
library(DBI)
con <- dbConnect(RMySQL::MySQL(),
dbname ="mydab",
host = "localhost",
port = 3306,
user = "root",
password = "")
value1 <- 23;
rss<- paste0 ("INSERT INTO namestable
(myvalue, person)
VALUES ('$value1', '",name,"')")
rs <<- dbGetQuery (con, rss)
}
heritblup("Tommy")
但我不断收到此错误:
Error in as.character.default() : no method for coercing this S4 class to a vector Called from: as.character.default()
我试图将粘贴功能更改为: rss<- paste0 ("插入名称表 (我的价值,人) VALUES ($value1, ",name,")")
错误仍然存在; 我不知道怎么了。 请帮忙
代码中的几个问题。我不确定 OP 是在尝试 insert
数据库中的记录还是从数据库中获取。
假设,根据查询,他希望在数据库中插入数据 table。
规则是在 R
中准备查询的方式与在 MySQL 中执行的方式相同。值替换(如果有的话)应该在 R
中执行,因为 MySQL 引擎不会对来自 R
的变量有任何想法。
因此,查询准备步骤应按以下方式完成:
rss <- sprintf("INSERT INTO namestable (myvalue, person) VALUES (%d, '%s')", value1, name)
# "INSERT INTO namestable (myvalue, person) VALUES (23, 'test')"
如果数据插入是目标,那么 dbGetQuery
不是每个 R 文档的正确选项,而是 dbSendStatement()
应该用于数据操作。帮助中的参考建议:
However, callers are strongly encouraged to use dbSendStatement() for data manipulation statements.
基于该查询执行行应该是:
rs <- dbSendStatement(con, rss)
ret_val <- dbGetRowsAffected(rs)
dbClearResult(rs)
dbDisconnect(con)
return(ret_val)