RS-DBI驱动程序警告:(作为字符导入的第1列中无法识别的MySQL字段类型7)

时间:2012-12-22 23:16:52

标签: r rmysql

我正在尝试运行一个适用于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'")

我做错了什么?

3 个答案:

答案 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中修复的问题。

解决方法是在读取数据后,您需要调用几种可能的字符到日期时间转换函数之一。 (哪一个取决于您要完全使用时间戳记。)

相关问题