我正在尝试运行一个适用于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'")
我做错了什么?
答案 0 :(得分:11)
&#34;类型&#34;是MYSQL中的关键字。用反引号围绕它来逃避字段名称。
SELECT * FROM `table` WHERE `type` = 'farmer'
您的表中可能还有一个时间戳列。已知R不识别该列类型。将其转换为SQL语句部分中的unix时间戳。
答案 1 :(得分:0)
看起来db模式在列中具有类型7的内容 - 并且该类型似乎对RMySQL驱动程序是未知的。
我尝试排除查询中的第一列,或者将其转换为select * ...
级别,例如
select foo as character, bar, bim, bom from 'table' where ...
答案 2 :(得分:0)
要清楚,当我遇到此错误消息时,这是因为我的数据字段是一个时间戳。
我通过将查询更改为引起错误的SELECT created_at FROM ...
来验证了这一点。我还通过更改查询 not 来验证这一点,以包括作为时间戳的列名,这样我就没有错误。
还请注意,错误消息计数的列从0开始(而不是像R那样从1开始)
恕我直言,答案是您没有做错任何事情,但这是需要在RMySQL中修复的问题。
解决方法是在读取数据后,您需要调用几种可能的字符到日期时间转换函数之一。 (哪一个取决于您要完全使用时间戳记。)