每次我尝试在R 3.0中使用RMySQL包中的dbWriteTable函数时(以及之前的R 2.15中)我收到此错误"Erreur dans tolower(avail) : chaîne de charactères multioctets incorrecte 45",
这意味着类似"Error in tolower(avail) : Multibyte string error X".
而我找不到任何解决方案,我甚至不知道这个错误产生的位置。
以下是事实:我在Mac OS X 10.9.1上工作但在10.8.x上有这个错误,我在Debian上也有这个错误。 MySQL和R都在同一台机器上(或者不是,它没有任何区别)。出于测试目的,我在表中创建了只有数值,我用RMySQL读取它的内容(没问题)然后尝试用dbWriteTable重新注入MySQL,并且繁荣。这是R脚本:
#!/usr/bin/Rscript
library(DBI)
library(RMySQL)
conn <- dbConnect("MySQL", user="userr", password="passworrd", dbname="dbtest")
res <- dbSendQuery(conn, statement = paste("SELECT * FROM testable"))
input <- fetch(res, n = -1)
dbWriteTable(conn, "testable2", input, row.names = T, overwrite = FALSE, append = T)
dbDisconnect(conn)
表格内容为:
id testval
1 1 76
2 2 47417
用户拥有数据库。获取工作正常但不是dbWriteTable。错误可能与某些字符编码有关,但我无法弄清楚是什么。
我正在使用R版本3.0.2(2013-09-25),RMySQL 0.9-3,DBI 0.2-7和MySQL 5.6.14,Mac OS X 10.9.1。
我在Debian机器上托管的Rstudio服务器上遇到了同样的问题。
Debian上的Mysql(不知道在Mac上哪里可以找到这些)日志说:
- 140211 14:04:15 24 Connect userr@xxx.xxx.xxx.xxx on dbtest
- 140211 14:04:32 24 Query show tables
- 140211 14:04:52 24 Quit
所以,我谦虚的愿望是有人可以让我走上正轨!
迪迪埃
答案 0 :(得分:1)
解决方案:这是数据库中的整理问题;我创建了另一个带有编码UTF-8的数据库(就像第一个一样),但这次使用了排序规则utf8_general_ci而不是utf8_bin,并且它完美地工作了。很长的问题,简短的回答。