Я убираю много своих БД / Таблиц и столкнулся с проблемой. Когда я выполняю большинство команд, которые изменяют данные в таблице (например, DELETE FROM или UPDATE), команда возвращается как выполненная, но фактически ничего не делает.
т.е.
mysql> SELECT * FROM members WHERE username = "Alex";
(Returns alex row).
mysql> DELETE FROM members WHERE username = "Alex";
(Says is completed, 0 row affected)
mysql> SELECT * FROM members WHERE username = "Alex";
(Returns alex row).
Этого не должно происходить, когда я запускаю команду удаления, я ожидаю, что она действительно удалит строки. Однако, и вот странная часть, если я останусь в системе некоторое время, строки в конечном итоге будут удалены. Если я немедленно выхожу, строки вообще не удаляются.
Это не тот код, который я запускаю (работаю с гораздо большим количеством условий / больших БД), но концепция та же самая. Я также проверяю удаления, используя adminer.php (менеджер MySQL с 1 php файлом, такой как phpmyadmin), и для того, чтобы любые удаления / обновления регистрировались, требуется около часа.
Я предполагаю, что команды находятся в очереди или кэшируются, или что-то в этом роде, и я хотел бы помешать MySQL сделать это. Когда я ввожу команду, я бы хотел, чтобы MySQL сразу же запустил эту команду, а не возвращал ее до того, как она действительно выполнит команду. Около 500K удалений закончились в течение 2 минут (в это я не могу поверить).
Фактический пример:
mysql> UPDATE members SET username = REPLACE(username, ' ', '');
Query OK, 0 rows affected (0.05 sec)
Rows matched: 24013 Changed: 0 Warnings: 0
mysql> SELECT * FROM members;
(displays many usernames, still with whitespaces)