首页 > 解决方案 > MariaDB - UPDATE/DELETE 静默失败

问题描述

我的data表位于 MariaDB 实例下的 AWS-RDS 中,如下所示:

| id | first | second | third | fourth | fifth | sixth |
|----|-------|--------|-------|--------|-------|-------|
|  3 | foo   | foo    | foo   | foo    |     1 | foo   |
|  4 | foo   | foo    | foo   | foo    |     2 | foo   |
|  5 | bar   | foo    | bar   | foo    |     3 | bar   |
|  6 | bar   | bar    | bar   | bar    |     4 | bar   |
|  7 | bar   | bar    | bar   | bar    |     5 | bar   |

UPDATE 或 DELETE 查询无法生成所需的输出而不会返回任何错误:

con <- dbConnect(RMariaDB::MariaDB(), group = "aws-rds")
dbSendQuery(con, statement = "UPDATE data SET second = 'bar' WHERE id = 4;")
dbDisconnect(con)

回报:

SQL UPDATE data SET second = 'bar' WHERE id = 4; 获取的行数:0 [完成] 更改:1

但是,该表似乎没有变化,因为读取它会返回原始表:

con <- dbConnect(RMariaDB::MariaDB(), group = "aws-rds")
data.tbl <- dbReadTable(con, "data") %>% as_tibble()
dbDisconnect(con)
data.tbl

回报:

| id | first | second | third | fourth | fifth | sixth |
|----|-------|--------|-------|--------|-------|-------|
|  3 | foo   | foo    | foo   | foo    |     1 | foo   |
|  4 | foo   | foo    | foo   | foo    |     2 | foo   |
|  5 | bar   | foo    | bar   | foo    |     3 | bar   |
|  6 | bar   | bar    | bar   | bar    |     4 | bar   |
|  7 | bar   | bar    | bar   | bar    |     5 | bar   |

我错过了什么?

标签: mysqlrmariadbamazon-rdsr-dbi

解决方案


?dbSendQuery

此方法仅适用于 SELECT 查询。出于兼容性原因,某些后端可能通过此方法支持数据操作查询。但是,强烈建议调用者将 dbSendStatement() 用于数据操作语句。

尝试使用dbSendStatement.


推荐阅读