繁体   English   中英

使用RMySQL dbWriteTable从R中写入MySQL时出现多字节字符串错误

[英]Multibyte string error when writing in MySQL from R with RMySQL dbWriteTable

每次我尝试在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   

所以,我最卑微的愿望是有人可以让我走上正轨!

迪迪埃

解决方案:这是数据库中的排序规则问题; 我使用编码UTF-8创建了另一个数据库(与第一个类似),但是这次使用归类utf8_general_ci而不是utf8_bin进行排序,并且在这里工作得非常好。 长问题,短答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM