Возможно ли, что вставка в удаленный MySQL завершается успешно, но не сообщает об этом клиенту?

#php #mysql

#php #mysql

Вопрос:

Возможно ли, что мой код, который вставляет данные на удаленный сервер MySQL, успешно выполняет запрос (в удаленной таблице появляется новая строка), но после этого сеть выходит из строя, и ответ от сервера не поступает в скрипт, для которого это будет выглядеть так, как будто вставка завершилась неудачно?

Ответ №1:

Да, это возможно. Ничто в том, что не удалось доставить ответ клиенту, не помешало бы серверу успешно завершить операцию, предполагая, конечно, что включена функция «автокоммит» или тому подобное.

Комментарии:

1. Но тогда даже перенос вставки в транзакцию (например, без автоматической фиксации) не гарантирует, что скрипт получит ответ?

2. Нет, я не думаю, что вы можете на 100% гарантировать, что получите ответ. Все, что вы можете сделать с транзакцией, это убедиться, что операция не произойдет (поскольку вы этого не commit сделаете), если вы не получите ответ от insert .

3. Итак, единственный надежный способ убедиться, что повторяющиеся данные не вставлены, — это добавить какой-то уникальный индекс?