2017-10-17 17 views
1

在RMySQL包中使用dbWriteTable()时,无论值如何,逻辑值均写为0。我希望,真正的价值将返回1:RMySQL - dbWriteTable()将TRUE逻辑写为0

# Setup 
# con is a valid MySQLConnection object 
> df <- data.frame(string = 'Testing Logical Values', 
       t_lgl = TRUE, 
       f_lgl = FALSE, 
       stringsAsFactors = FALSE) 
> df 
        string t_lgl f_lgl 
1 Testing Logical Values TRUE FALSE 
> class(df[,2]) 
[1] "logical" 

# Test 
# This schema has no tables until dbWriteTable() is called 
> dbWriteTable(con,'test_table',df) 
[1] TRUE 

# Result 
> dbReadTable(con,'test_table') 
        string t_lgl f_lgl 
1 Testing Logical Values  0  0 
> class(dbReadTable(con,'test_table')[,2]) 
[1] "integer" 

应该不是t_lgl返回值1,因为它是真实的,并传递到dbWriteTable()作为一个逻辑?

回答

0

RMySQL包是being phased out赞成RMariaDB。 使用RMariaDB我能够成功写入logical值到MySQL数据库是这样的:

con <- dbConnect(RMariaDB::MariaDB(), group = "my-db") 

dbWriteTable(con, "test", data.frame(a=T, b=F), overwrite = T)