Вот странный случай, который никогда не случался со мной раньше: я кодирую с помощью mysqli и php уже около 2 лет, очень простые вещи, подготовленные операторы, выполнение запросов и т. Д., Начались с WAMP, затем перешли на ubuntu, попробовали LAMP Мне это не понравилось, я продолжал исследовать правильную среду тестирования, и я обнаружил, что PuPHPet был идеален, работал с ним несколько месяцев, и все идет отлично.
Никогда за все это время мне не приходилось беспокоиться об открытии, закрытии или фиксации соединений, как я это делаю в JAVA, я где-то читал, что php обрабатывает соединения, он открывает и закрывает их при запуске скриптов. Я никогда не обращал особого внимания, что я должен был, я нашел этот очень полезный пост Примеры транзакций PHP + MySQL, который я начну использовать с этого момента.
Но причина, по которой я пишу здесь, в том, что внезапный автокоммит отключен. Я открыл свой обычный проект puphpet, попытался вставить несколько новых записей, но они не были вставлены. Итак, я сделал некоторый тест в рабочей среде, вставил некоторые записи вручную, они были вставлены, но мой индекс AI увеличился, что означает, что мое приложение действительно что-то вставило, или, по крайней мере, оно попыталось, или что-то произошло, потому что счетчик AI увеличился. Получила некоторую помощь от пары администраторов баз данных, и мы пришли к выводу, что это автокоммит.
Используя этот кусок кода:
$res = mysqli_query($mysqli, "SELECT @@autocommit");
$row = mysqli_fetch_row($row);
printf("Autocommit: %s\n", $row[0]);
Он печатает «Autocommit: 0», поэтому он выключен, но я ничего не менял, даже в производственной среде autocommit включен, или, по крайней мере, мои вставки остаются там, но я не знаю, почему это изменилось в моей тестовой среде Вот и мне интересно, что могло случиться? У кого-нибудь есть идеи?
Задача ещё не решена.
Других решений пока нет …