импорт большого файла SQL phpmyadmin

12

Я пытаюсь импортировать этот файл SQL в phpmyadmin и получил это сообщение

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1

Что мне делать, чтобы сделать этот импорт?

портной
источник

Ответы:

12

Предполагая, что вы не можете увеличить объем памяти, есть несколько вариантов.

  • Если вы не знакомы с командной строкой и действительно хотите импортировать стиль GUI, вы можете использовать BigDump ( http://www.ozerov.de/bigdump/ ). Я использовал это один раз, но это было какое-то время. Из того, что я помню, вы скачаете файл с именем bigdump.php (с некоторыми инструкциями) и поместите его на свой веб-сервер в каталоге с файлом дампа БД MySQL, который слишком велик для импорта через PHPMYADMIN. Затем перейдите к нему с помощью браузера - что-то вроде http://your-website.com/bigdump.php .

  • Если вы знакомы с командной строкой и используете систему на основе Linux, вы можете использовать такой код:

    mysql -u ИМЯ ПОЛЬЗОВАТЕЛЯ -p DATABASENAME <FILENAME.sql

База данных и пользователь (с правами доступа к базе данных) должны существовать до запуска этой команды. Примечание. Я скопировал приведенную выше команду из другого источника. Я всегда делаю свои дампы и восстанавливаю так: DUMP: mysqldump -u DB_USER -h DB_HOST -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz RESTORE:gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Наконец, и что наиболее болезненно, вы можете выбрать, чтобы сваливать отдельные таблицы или группы таблиц в достаточно маленькие дампы. Затем восстановите эти отдельные дампы по одному через PHPMYADMIN.

FTP и ВОССТАНОВИТЬ инструкции:

Загрузите FileZilla здесь: http://filezilla-project.org/download.php?type=client

Как правило, вы можете подключиться по FTP к вашему серверу (особенно к общему хосту), используя те же логин и пароль, что и для SSH (вход в систему из командной строки). Просто убедитесь, что правильно настроили соединение с вашим сервером в FileZilla.

После подключения ваш путь по умолчанию, вероятно, будет вашей папкой $ HOME (на компьютерах nix). Если вы не планируете использовать FTP, просто выбросьте туда то, что вы хотите. Вы всегда можете переместить его из командной строки.

Если вы поместите MySQL Dump по FTP в вашу папку $ HOME, то команда RESTORE для базы данных с именем mydb и файла дампа базы данных с именем mydb.sql.gz (в папке $ HOME) будет выглядеть так:

gunzip < $HOME/mydb.sql.gz | mysql -u DB_USER -pDB_PASSWORD mydb

где вам, очевидно, потребуется изменить значения DB_USER и DB_PASSWORD, указав, какой пользователь и пароль вы установили для БД.

Помнить:

  • БД должна уже существовать (но быть пустой) до выполнения команды RESTORE
  • DB_USER и DB_PASSWORD должны быть настроены для БД перед командой RESTORE (вы можете сделать это из PHPMYADMIN - вкладка Привилегии)
  • При настройке DB_USER из PHPMYADMIN по умолчанию будет разрешено только DB_USER получать доступ к БД с локального хоста (сервер, на котором размещена БД). Я предполагаю, что это хорошо для вашей ситуации. Когда вы попадаете в более сложные DUMP и RESTORE, вы можете захотеть сделать это с другой машины, которая не сложна, но требует предоставления еще пары фрагментов информации и DB_USER с соответствующими привилегиями.

FTP БД и ВОССТАНОВИТЬ ... Шаг за шагом

  1. Найдите заархивированный файл дампа MySQL на рабочем столе (пример: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. Скачайте и установите FileZilla
  3. В FileZilla перейдите в File-> Site Manager и нажмите на кнопку New Site (нижний левый сектор GUI). Установите для хоста домен (пример: dest.com), который находится на вашем сервере DESTINATION. Установите протокол на FTP или SFTP (это зависит от вашего хостинга, спросите их). Установите имя пользователя и пароль (пример: пользователь = предоставление, пароль = пароль предоставления) - если протокол FTP является SFTP, то любой набор действительных учетных данных для входа в систему SSH должен работать.
  4. (В FileZilla) Нажмите кнопку «Подключиться» (нижняя левая кнопка, самая большая)
  5. (В FileZilla) После подключения к удаленному серверу (должен быть вашим сервером DESTINATION) используйте левую часть FileZilla, чтобы перейти к каталогу, в котором находится файл дампа, расположенный на шаге 1. (Путь к локальной машине находится в крайнем левом углу, примерно на полпути вниз, и он помечен как Локальный сайт :. В нашем примере текстовое поле рядом с Локальным сайтом: будет выглядеть как C: \ Web \ DB \ Dumps.)
  6. (В FileZilla) Найдите Удаленный сайт: ярлык прямо справа от Локального сайта :.
  7. (В FileZilla) Нет технической причины, по которой вы не можете поместить DUMP в папку, в которую открывается FileZilla. Скорее всего, по умолчанию это будет каталог $ HOME. Если у вас нет причин помещать дамп базы данных в определенный каталог, например, для собственных организационных целей, оставьте только путь на удаленном сайте. Запишите этот путь (пример Linux: / usr / grant).
  8. (В FileZilla) Найдите файл на своем локальном компьютере в левой половине FileZilla под деревом, показанным под локальным сайтом: метка, найденная на шаге 5. Дважды щелкните этот файл, и FileZilla отправит его по FTP на ваш удаленный сайт.
  9. В PHPMYADMIN на вашем сервере DESTINATION создайте новую базу данных (введите mydb в поле «Создать новую базу данных» и нажмите кнопку «Создать»).
  10. (В PHPMYADMIN) Выберите mydb в меню слева.
  11. (В PHPMYADMIN) Нажмите на вкладку Привилегии (вверху справа). Однажды на этой странице нажмите на Добавить нового пользователя.
  12. (В PHPMYADMIN-> Привилегии-> Добавить нового пользователя) Укажите имя пользователя (Пример: mydb_grant) и пароль (Пример: mydb_password). В выпадающем списке Host выберите Local. Убедитесь, что установлен переключатель рядом с «Предоставить все привилегии для базы данных». Затем нажмите Go (внизу справа на экране).
  13. SSH на ваш сервер назначения.
  14. (В вашем терминале SSH) Перейдите в каталог, который вы записали в Шаге 7. Используя команду, подобную - cd $HOMEили cd /usr/grant. (На компьютерах с Linux $ HOME - это переменная окружения, которая будет выглядеть примерно как / usr / grant.)
  15. (В вашем SSH-терминале) Выполните следующую команду: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(между -p и паролем нет пробела, потому что так должно быть, а не опечатка).

Как только эта последняя команда завершится, ваша БД будет ВОССТАНОВЛЕНА. Я не рекомендую использовать предоставленные мной имя пользователя БД и пароль, просто замените их более безопасным выбором.

DUMP и RESTORE на разных серверах без FTP

Если вы хотите пропустить материал FTP и не возражаете перед повторением DUMP, вы можете сделать это следующим образом:

  1. Войдите на сервер DESTINATION (где вы хотите разместить БД - мы назовем это destination.com)
  2. Создайте базу данных, пользователя и соответствующие права, как указано выше, на сервере DESTINATION.
  3. Убедитесь, что привилегии на сервере SOURCE позволяют SOURCE_DB_USER получать удаленный доступ к БД - либо разрешить доступ с dest.com, либо из% (% - всем и каждому, если у них есть правильные имя пользователя и пароль)
  4. На сервере DESTINATION запустите: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzгде source.com - сервер SOURCE (где в данный момент находится БД)
  5. Затем (на сервере DESTINATION) запустите: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Это должно быть все, что вам нужно сделать, чтобы переместить БД с одного сервера на другой. Предостережения в том, что я делал это только на своих собственных выделенных серверах Ubuntu (со стандартным LAMP) и VPS-серверах Dreamhost (на которых, я считаю, работает CentOS, но я могу ошибаться).


источник
3

Вы можете:

  • увеличение memory_limit
  • увеличение post_max_size
  • увеличение max_execution_time
  • необходимо перезагрузить Apache после всего этого.
  • или используйте Big Dump
Салман
источник
1

Сжат ли ваш файл SQL? У меня была эта проблема с архивом sql файла 6MB. Я распаковал его в несжатый файл sql 53 МБ, и он работал. Разархивирование файла дампа в процессе должно съесть всю память.

Джереми
источник
0

если у вас есть ssh доступ к серверу с mysql, то вы можете поместить файл с дампом mysql в какое-то место, введите консоль mysql:

mysql -u myUser myDatabase

Или, если сервер MySQL находится не на локальном хосте, и разрешает соединения не только с локального хоста, чем:

mysql -u myUser -h mysql.example.com myDatabase

Затем вас попросят ввести пароль для вашего пользователя mysql. Теперь вы в консоли MySQL. Здесь вы можете ввести

source ~/mydump.sql;

Вы увидите, как будут выполняться команды из вашего дампа.

В этом методе вас не волнуют ограничения памяти php.


источник
0

если размер вашей базы данных превышает 128 МБ, разбейте базу данных на части.

Используйте программное обеспечение SQL Dump Splitter

SQL Dump Splitter - это приложение размером 430 КБ, которое дает полный контроль над разделением огромных баз данных на более мелкие файлы SQL. С помощью SQL Dump Splitter вы можете:

  • Выберите размер каждого куска
  • Возможность пропустить комментарии (чтобы даже уменьшить размер БД)
  • Автоматизировать деятельность.

источник
как вы автоматизируете деятельность? Я использую сплиттер, и я понятия не имею, как он работает ... он завершил разделение, не сказав мне, на какие части он разбивал файл, и теперь нет помощи или FAQ, чтобы помочь с его использованием.