Doctrine Entity Manager получает ошибку «Только чтение» из базы данных - PullRequest
0 голосов
/ 13 июня 2018
public function save($itemId, $invoiceName)
{
    $query = "
           INSERT INTO invoice (item_id, invoice_name)
           VALUES (" . $itemId . ",'" . $invoiceName . ")
    ";
    $connection = $this->entityManager->getConnection('master');
    return $connection->executeQuery($query);
}

Ошибка при попытке вставить в таблицу:

An exception occurred while executing ' INSERT INTO invoice (item_id, invoice_name) VALUES (10600029,'FV/1823/06/2018/SOL') ': SQLSTATE[HY000]: General error: 1290 The MySQL server is running with the --read-only option so it cannot execute this statement

Проверено соединение с БД в порядке.Пытался сохранить что-то с тем же пользователем с клиентом DBeaver DB, и все прошло нормально - сохранено без проблем.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Даже если я указал 'master', запрос все время перехватывался slave.

$entityManager->getConnection()->prepare('INSERT ... ')->execute();

Появился, чтобы решить проблему.

0 голосов
/ 13 июня 2018

вам нужно закрыть используемое соединение, прежде чем менять соединение и вставить, я думаю, попробуйте что-то вроде этого:

$connection = $this->entityManager->getConnection()->close();

$query = "
       INSERT INTO invoice (item_id, invoice_name)
       VALUES (" . $itemId . ",'" . $invoiceName . ")
";
$connection = $this->entityManager->getConnection('master');
return $connection->executeQuery($query);
...