考慮一下:如何編碼[R字符串,以便他們沒有編碼錯誤讀取到MySQL
> scr<-paste("INSERT INTO ques2_log (freeze_time) value(",sQuote(now()),")")
> scr
#> "INSERT INTO ques2_log (freeze_time) value(‘2017-06-13 23:46:16’)"
如果我們養活這個簡單的SQL腳本到一個MySQL數據庫,如下所示:
dbExecute(db,scr1)
MySQL數據庫引發以下錯誤:Error in .local(conn, statement, ...) : could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '��2017-06-13 23:44:13’)' at line 1
我已經通過手動輸入測試了SQL腳本,它工作正常。
也很清楚,單引號是意想不到的字符。
我查閱了一些關於字符編碼的在線文章,並在通過RMySQL命令提交給數據庫之前嘗試了 enc2utf8(scr)
。沒有效果。同樣的錯誤。
我也看了this跑
ALTER DATABASE ques2_log CHARACTER SET utf8 COLLATE utf8_general_ci;
但仍然是錯誤。
是否有一個原因,你正在使用sQuote'而不是隻是普通的舊單'''?通常'sQuote'用於格式化輸出以顯示在屏幕上,這不是你在這裏做的。 – joran
我正在使用sQuote通過單引號環繞** now()**的輸出。我想,用單引號括起一個函數的輸出是很困難的。 –
您是否嘗試過'paste0(「'」,date(),「'」)'? – joran