5

我正在尝试运行一个适用于 MySQL 或其他 MySQL 连接器 API 的简单查询,

SELECT * FROM `table` WHERE type = 'farmer'

我尝试了使用 RMySQL 包的各种方法,它们都得到相同的错误 RS-DBI driver warning: (unrecognized MySQL field type 7 in column 1 imported as character)

Type = 'farmer'
(Query<-paste0("SELECT * FROM `table` WHERE type = '%",Type,"%'")) 
res<-dbGetQuery(con, Query)

Query<-paste("SELECT * FROM `table` WHERE type = \'farmer\'")



Query<-paste("SELECT * FROM `table` WHERE type = 'farmer'")

我究竟做错了什么?

4

3 回答 3

11

“类型”是 MYSQL 中的关键字。用反引号包围它以转义字段名称。

SELECT * FROM `table` WHERE `type` = 'farmer'

此外,您的表中可能有一个时间戳列。已知 R 无法识别该列类型。将其转换为 SQL 语句部分中的 unix 时间戳。

于 2012-12-23T14:37:40.353 回答
0

看起来 db 模式在列中具有类型 7 的内容——并且 RMySQL 驱动程序似乎不知道该类型。

我尝试在查询中排除第一列,或者将其转换为select * ...级别,例如通过类似

 select foo as character, bar, bim, bom from 'table' where ...
于 2012-12-22T23:21:53.363 回答
0

需要明确的是,当我遇到此错误消息时,是因为我的数据字段是时间戳。

我通过更改SELECT created_at FROM ...导致错误的查询来验证这一点。我还通过更改查询以包括时间戳的列名来验证这一点,然后我没有错误。

还要注意,错误消息从 0 开始计算列(而不是像 R 那样从 1 开始)

恕我直言,答案是您没有做错任何事情,但这是需要在 RMySQL 中修复的问题。

解决方法是在您读入数据后,您需要调用几个可能的字符到日期时间转换函数之一。(哪一个取决于你想对时间戳做什么。)

于 2018-09-29T00:52:22.820 回答