"MySQL-сервер пішов" при спробі імпортувати великий дамп-файл


11

Я намагаюся імпортувати дамп-файл MySQL.

Файл створений на сервері Linux, я намагаюся імпортувати у Windows

Я увійшов у командний рядок і побіг:

SOURCE c:/dump.sql

Але це, здається, призвело до деяких проблем із набором символів (зокрема, з розумними цитатами та іншими нестандартними пунктуаціями).

Мені запропонували запустити:

mysql -u username -d dbase < c:\dump.sql

Коли я намагаюся це, я отримую помилку

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Трохи гуглінг підказав, що це стосується перемикача max_allowed_packet, але я спробував це, і це не спрацювало. Хтось має ідею, що це може бути?

Якщо хтось має пропозицію щодо питання набору символів, це також буде корисним.


Будь-які відгуки? [15 символів, необхідних для коментаря]
Mihai Limbăşan

Відповіді:


23

Першим моїм інстинктом після прочитання повідомлення про помилку в заголовку питання було запропонувати збільшити max_allowed_packet. Ви згадали, що ви спробували "той перемикач", і він не спрацював. Чи можете ви підтвердити, що ви правильно змінили файл конфігурації сервера? Ваші фразування виглядає так, що ви намагалися використовувати це як командний рядок на командному рядку клієнта mysql.exe, що не призведе до того, щоб сервер змінив поведінку.

Отже, коротше, те, що ви повинні спробувати зробити, це знайти та відредагувати файл my.cnf, який ваш сервер зараз використовує. У [mysqld]розділі змініть параметри max_allowed_packet на щось подібне

[mysqld]
max_allowed_packet=32M

Не забудьте перезапустити сервер після зміни конфігурації.

Я використав 32M (смішно велике значення) в якості прикладу. Оскільки ваш запит здається величезним, вам слід спробувати це значення (або, можливо, навіть 64М, якщо у вас достатньо оперативної пам’яті), щоб побачити, чи працює він.

Інший варіант - залишити сервер таким, який є, та змінити поведінку клієнта, який використовується для генерування дампів SQL. Скажіть, щоб обмежити кількість окремих запитів до 1 Мб - це також повинно зробити трюк.

Більш детально див. B.1.2.10. Пакет занадто великий у посібнику по MySQL.


1
Так, я просто намагався переключити командний рядок. Причиною, що я вважав, що це має ефект, було те, що він мав дозволений пакет малих помилок, коли я встановлював його на щось менше. Я спробую вашу пропозицію в понеділок. Спасибі
Джеремі Французький

Запрошуємо вас - я майже впевнений, що це спрацює. На жаль, як і у багатьох (добре, більшість) інших програм, написаних протягом останніх 50 років, повідомлення про помилки MySQL, як правило, смокчуть і вводять в оману, якщо ви ще не знайомі з тим, як працює розум розробника :).
Mihai Limbăşan

Радий це почути - веселитися.
Mihai Limbăşan

Дуже дуже дивовижно. У мене була ця сама проблема, прийшов сюди, щоб задати питання і бам! вирішено. @Mihai - все, що вам платять; недостатньо :)
Стівен Еверс

Це рішення допомогло нам, коли ми отримали цю помилку після переміщення нашого MySQL з localhost на віддалений сервер. Велике спасибі!
Леа Коен

1

На MySQL 5.7.24 це було пов'язано зі старою конфігурацією з MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

Нижче параметр є обов'язковим, якщо версія SQL однакова 5.7.5 або вище.

sql_mode=TRADITIONAL

Також в /etc/my.cnf є два параметри max_allowed_packet , інший - для mysqldump. Зверніть увагу на те саме.

max_allowed_packet = <1G>

Моя установка на CentOS7.


0

Чи можете ви отримати доступ до екземпляра MySQL на сервері Windows з вікна linux?

Якщо так, чи можете ви запустити команду на вікні linux за допомогою перемикача -h для підключення до сервера на вікні Windows?

mysql -u username -d dbase -h <windows host> < dump.sql

Це може вирішити проблеми з набором символів , оскільки для імпорту ви використовуєте клієнт Linux у вихідному полі. (лише здогадка)


0

Що говорить журнал MySQL?

Іноді про цю помилку повідомляється клієнт, якщо на сервері є непоправна помилка. Це може бути показником пошкодження дисків таблиць баз даних.


-1

У вашого облікового запису був пароль? Можливо, вам потрібно додати перемикач -p:

mysql -u username -p -d dbase < c:\dump.sql

О, мабуть, ні, оскільки, здається, не вдалося здійснити імпорт.
Brent
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.