Я прибираю багато моїх баз даних / таблиць і працюю в проблемі. Коли я виконую більшість команд, які змінюють дані в таблиці (тобто, 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).
Це не повинно відбуватися, коли я запускаю команду видалення, я очікую, що вона фактично видалить рядки. Однак, і ось дивна частина, якщо я залишаюсь увійшов на деякий час, рядки зрештою будуть видалені. Якщо миттєво вийти, рядки взагалі не видаляються.
Це не точний код, я працюю (працює з набагато більше умов / більшої DB), але концепція є точно такою ж. Я також перевіряю видалення за допомогою 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)