MariaDB - ОБНОВЛЕНИЕ / УДАЛЕНИЕ не выполняется молча

Моя таблица data находится в AWS-RDS под экземпляром MariaDB и выглядит следующим образом:

| 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 вторая = 'бар', ГДЕ id = 4; ROWS Извлечено: 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   |

Что мне не хватает?


person Joe Catin    schedule 05.05.2018    source источник
comment
Единственное объяснение, которое приходит на ум, это то, что ваше обновление не фиксируется. Но поскольку он вернулся в R, сообщив об изменении одной записи, это очень странно.   -  person Tim Biegeleisen    schedule 05.05.2018
comment
Спасибо, что вернулись! Нет подсказки, больше нет успеха с удалением, он возвращает соответствующее количество затронутых строк, но не обновляет таблицу:/   -  person Joe Catin    schedule 05.05.2018


Ответы (1)


От 1_

Этот метод предназначен только для запросов SELECT. Некоторые серверные части могут поддерживать запросы на манипулирование данными с помощью этого метода из соображений совместимости. Однако вызывающим сторонам настоятельно рекомендуется использовать dbSendStatement() для операторов обработки данных.

Попробуйте использовать dbSendStatement.

person asachet    schedule 19.09.2019