R通过ODBC连接MySQL数据库报错无法访问数据
连接问题排查与解决方法
1. RMySQL连接报错修复
报错核心原因是包名大小写拼写错误:R语言对包名、函数名大小写完全敏感,你安装的包名为RMySQL(M大写),但调用时写成了RmySQL(y小写),因此系统找不到对应包。
修正后的连接代码:
install.packages("RMySQL") library(DBI) # 注意RMySQL的大小写拼写 con <- dbConnect(RMySQL::MySQL(), dbname = "nicer_med", host = "WRGTNICER1", port = 3306, user = "root", password = "你的实际数据库密码")
注:RMySQL包目前已停止长期维护,如果后续碰到系统依赖兼容问题,可替换为官方推荐的
RMariaDB包,调用语法完全一致,兼容性更好。
2. RODBC查询报错修复
你能正常执行sqlTables()、sqlColumns()说明ODBC连接本身是完全正常的,查询报错是SQL语法错误导致的:
你写的查询语句中,最后一个字段SEXE后面多写了一个多余的逗号,MySQL解析到逗号后没有找到后续字段,直接匹配到FROM关键字,就会抛出1064语法错误。
错误SQL片段:
-- 错误:SEXE后多余逗号 SELECT PID,NAME, FIRSTNAME1, SEXE, FROM a_patient;
修正后的R端查询代码:
library(RODBC) mycon <- odbcConnect("nicer_64") # 删除SEXE后的多余逗号,不需要套无意义的paste() query_res <- sqlQuery(mycon, "SELECT PID, NAME, FIRSTNAME1, SEXE FROM a_patient")
额外排查提示
- 写SQL时如果不确定语法是否正确,可先把SQL字符串打印出来,复制到原生MySQL客户端执行验证,可快速区分是SQL本身问题还是R连接问题
- 如果查询结果出现中文乱码,可在ODBC连接时指定编码:
odbcConnect("nicer_64", DBMSencoding = "UTF-8")
内容的提问来源于stack exchange,提问作者Robisch
相关产品推荐
相关产品推荐

