Загалом помилка:
Помилка: 2006 ( CR_SERVER_GONE_ERROR) - сервер MySQL пішов
означає, що клієнт не зміг надіслати запитання на сервер .
mysql імпорт
У вашому конкретному випадку під час імпорту файлу бази даних через mysqlце, швидше за все, означає, що деякі запити у файлі SQL занадто великі для імпорту, і їх не вдалося виконати на сервері, тому клієнт не працює при першій помилці.
Отже, ви маєте такі можливості:
Додати параметр force ( -f) для mysqlпродовження та виконання решти запитів.
Це корисно, якщо в базі даних є великі запити, пов’язані з кешем, які не є актуальними.
Збільшити max_allowed_packetіwait_timeout в налаштуваннях вашого сервера (наприклад ~/.my.cnf).
Скиньте базу даних, використовуючи --skip-extended-insertопцію для розбиття великих запитів. Потім знову імпортуйте його.
Спробуйте застосувати --max-allowed-packetваріант для mysql.
Загальні причини
Загалом ця помилка може означати кілька речей, таких як:
запит до сервера неправильний або занадто великий,
Рішення: Збільшити max_allowed_packetзмінну .
Переконайтеся, що змінна знаходиться під [mysqld]розділом, а не [mysql].
Не бійтеся використовувати велику кількість для тестування (як 1G).
Не забудьте перезапустити сервер MySQL / MariaDB.
Перевірити значення було встановлено належним чином:
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
Ви отримали тайм-аут від з'єднання TCP / IP на стороні клієнта.
Рішення: Збільшити wait_timeoutзмінну .
Ви спробували запустити запит після закриття з'єднання з сервером.
Рішення: Логічну помилку в додатку слід виправити.
Помилка пошуку імені хоста (наприклад, випуск сервера DNS) або сервер був запущений з --skip-networkingопцією.
Інша можливість полягає в тому, що ваш брандмауер блокує порт MySQL (наприклад, 3306 за замовчуванням).
Запущену нитку вбили, тому повторіть спробу.
Ви зіткнулися з помилкою, коли сервер загинув під час виконання запиту.
Клієнт, який працює на іншому хості, не має необхідних привілеїв для підключення.
І багато іншого, тому дізнайтеся більше на: B.5.2.9 MySQL-сервер пішов .
Налагодження
Ось кілька ідей налагодження на експертному рівні:
Перевірте журнали, наприклад
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
Перевірте з'єднання через mysql, telnetабо функцію дзвону (наприклад ,mysql_ping , в PHP).
Використовуйте tcpdumpдля обнюхання зв'язку MySQL (не працює для підключення сокета), наприклад:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
У Linux використовуйте strace. На BSD / Mac використання dtrace/dtruss , напр
sudo dtruss -a -fn mysqld 2>&1
Подивитися: Початок роботи з DTracing MySQL
Дізнайтеся більше про те, як налагодити MySQL-сервер чи клієнт на: 26.5 Налагодження та перенос MySQL .
Для довідки перевірте вихідний код у sql-common/client.cфайлі, відповідальному за видачу CR_SERVER_GONE_ERRORпомилки для клієнтської команди.
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}