Denwer импорт дампа MySQL
Сегодня нужно было поработать на ноуте, и к сожалению доступа к серверу не было. Поэтому воспользовался пакетом от dklab Denwer.
При импорте 9 мб дампа возникли ошибки..
1. PhpMyAdmin выкидывал на главную
По опыту полез проверять ограничения размера файлов, не ошибся.
Открываем \WebServers\usr\local\php5\php.ini
И правим два следующих ключа, было:
1 2 3 4 |
post_max_size = 8M upload_max_filesize = 8M |
Стало:
1 2 3 4 |
post_max_size = 128M upload_max_filesize = 128M |
После чего дамп долго грузился и я все равно получил ошибку:
2. Maximum execution time of 300 seconds exceeded in
Z:\home\localhost\www\Tools\phpmyadmin\libraries\read_dump.lib.php
Эту проблему можно решать по разному, например установив, в файле конфигурации phpmyadmin, параметр set_time_limit или опять в том же конфиге php.ini поменять значение параметра max_execution_time, но исходя из имени файла: read_dump, я понял, что лучше этого не делать, т.к. если за 5 минут, не успел импортировать 9 мб, то увеличение времени, может не дать нужного результата.
В итоге зная по Линуксу, что можно импортировать дамп напрямую через исполняемый файл mysql полез искать, такую же возможность.
Пошел по пути:
\WebServers\usr\local\mysql5\bin\mysql_run_to_import_dumps.exe
Попробовал импортировать и получил еще одну ошибку:
3. mysql.exe: Character set 'cp1251' is not a compiled character set and is not specified in the '\usr\local\mysql5\share\charsets\Index.xml' file
Пошел на dklab и вот что я обнаружил, запускать нужно не по прямому пути, а с виртуального диска, в моём случае все заработало так:
1 2 3 |
Z:\usr\local\mysql5\bin\mysql_run_to_import_dumps.exe -uroot motodb<moto.sql |
где:
motodb - база данных
moto.sql - файл дампа, который надо положить в
\WebServers\usr\local\mysql5\bin\
Импортирование прошло довольно быстро, данные восстановлены 🙂
В другом же случае помогло редактирование Z:\usr\local\mysql5\my.cnf, а именно комментирование кодировки "по-умолчанию":
1 2 3 |
#default-character-set = cp1251 |
--[добавлено]--
Сегодня при импорте ~100 мб дампа получил новые, не менее интересные ошибки 🙂
Z:\usr\local\mysql5\bin>mysql_run_to_import_dumps.exe -uroot pofigistmysql_run_to_import_dumps.exe -uroot pofdbmysql.exe -uroot pofdb<123.sql
ERROR 2006 (HY000) at line 315: MySQL server has gone away
Итак по порядку:
Ошибка Error in my_thread_global_end() возникает в том случае, если во время выполнения парсинга (могу ошибаться) запроса MySQL, его прервать по Ctrl+Break
Ошибка ERROR 2006 (HY000) возникает в случае, если у Вас очень большой запрос (так любит делать phpMyAdmin, объединять все данные в один большущий запросище), и он не умещается в максимальный размер пакета. Решение кроется в увеличении размера пакета, делается это в файле
Z:\usr\local\mysql5\my.cnf
а именно настройкой:
1 2 3 4 |
# Различные настройки, оптимизированные для небольшого объема памяти. max_allowed_packet = 512M |
После изменения этой настройки, не забудьте перезагрузить сервер, так же добавление дампа, может занять длительное время (100 мб~20 мин), поэтому запасайтесь терпением 🙂
--[добавлено]--
Denwer это хорошо, а как же сделать тоже самое в linux?
1. Заливаем дамп на хостинг, например файл dump.sql в папку /www/db/
2. Создаем базу, например DBNAME
3. Авторизуемся на хостинге по SSH с помощью Putty
4. Переходим в папку /www/db
5. Выполняем комманду:
1 2 3 |
mysql -uПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ DBNAME<dump.sql |
6. Ждем пока дамп загрузится
Если дамп загрузился, но русские буквы в виде знаков вопросов (как-то так: ???? ?? ????), тогда очищаем базу и добавляем к комманде из п.5 кодировку:
1 2 3 |
mysql -uПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ --default-character-set=cp1251 DBNAME<dump.sql |
Разумеется вместо cp1251 нужно поставить кодировку русского текста в файле дампа. Посмотреть её можно, открыв дамп в текстовом редакторе. Например в NotePad++
Author: | Tags: /
| Rating:
2 comments.
Write a comment