імпорт великого файлу 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

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

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

  • Якщо ви знайомі з командним рядком та використовуєте систему на базі Linux, ви можете використовувати такий код:

    mysql -u USERNAME -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 та RESTORE:

Завантажте файл FileZilla тут: http://filezilla-project.org/download.php?type=client

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

Після підключення ваш шлях за замовчуванням, ймовірно, буде вашою папкою $ HOME (на nix-машинах). Якщо ви не плануєте робити багато FTPing, просто скиньте все, що вам потрібно. Ви завжди можете перемістити його з командного рядка.

Якщо ви FTP'd дамп MySQL у папку $ HOME, тоді команда RESTORE для БД з назвою mydb та db-файл дампа з назвою 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 отримувати доступ до БД від localhost (сервер, на якому розміщується БД). Я припускаю, що це нормально для вашого гранту. Коли ви потрапляєте у більш просунуті DUMP та RESTORE, ви можете зробити це з іншої машини, яка не є складною, але вимагає надання ще кількох відомостей та DB_USER з належними привілеями.

FTP DB та RESTORE його ... Крок за кроком

  1. Знайдіть на своєму робочому столі заархівований звантажений файл MySQL (Приклад: C: \ Web \ DB \ Dumps \ mydb.sql.zip)
  2. Завантажте та встановіть FileZilla
  3. У FileZilla перейдіть у меню Файл-> Менеджер сайтів та натисніть кнопку Новий сайт (нижній лівий квадрант GUI). Встановіть хост на домен (Приклад: dest.com) на цьому сервері DESTINATION. Встановіть протокол на FTP або SFTP (це залежить від вашого хостингу, запитайте їх). Встановіть User and Password (Приклад: User = grant, Password = пароль дозволу) - якщо протокол FTP є SFTP, будь-який набір дійсних даних для входу в SSH повинен працювати.
  4. (У FileZilla) Клацніть Підключити (нижня ліва частина кнопки)
  5. (У FileZilla) Після підключення до віддаленого сервера (має бути вашим сервером DESTINATION) використовуйте ліву частину FileZilla для переходу до каталогу, де знаходиться файл дампа, який ви знаходитесь на етапі 1. (Шлях для локальної машини знаходиться в лівій крайній частині, приблизно на півдорозі вниз, і вона позначена Місцевим сайтом. У нашому прикладі текстове поле поруч із Місцевим сайтом: буде читати C: \ Web \ DB \ Dumps.)
  6. (У FileZilla) Знайдіть віддалений сайт: позначте прямо праворуч від локального сайту:.
  7. (У FileZilla) Немає жодних технічних причин, до яких ви не можете помістити DB DUMP у папку, до якої відкривається FileZilla. Ймовірно, це за замовчуванням для вашого каталогу $ HOME. Якщо у вас немає жодних підстав розміщувати дамп DB у певному каталозі - наприклад, для ваших власних організаційних цілей - тоді залиште шлях на віддаленому сайті в спокої. Запишіть цей шлях (Приклад Linux: / usr / grant).
  8. (У FileZilla) Знайдіть файл на вашій локальній машині в лівій половині FileZilla трохи під деревом, показаним під місцевим сайтом: мітка, яку ви знайшли на кроці 5. Двічі клацніть цей файл, і FileZilla відправить його на ваш віддалений сайт.
  9. У PHPMYADMIN на сервері ВИЗНАЧЕННЯ створіть нову базу даних (введіть mydb у текстове поле Створити нову базу даних та натисніть кнопку Створити).
  10. (На PHPMYADMIN) Виберіть mydb у меню ліворуч.
  11. (На PHPMYADMIN) Клацніть на вкладці Привілеї (праворуч угорі). Опинившись на цій сторінці, натисніть кнопку Додати нового користувача.
  12. (У PHPMYADMIN-> Привілеї-> Додати нового користувача) Укажіть ім’я користувача (Приклад: mydb_grant) та пароль (Приклад: mydb_password). У спадному меню Host виберіть Local. Переконайтесь, що вибрано перемикач поруч із пунктом "Надати всі привілеї на базу даних". Потім натисніть кнопку "Перейти" (у нижній правій частині екрана).
  13. SSH на ваш сервер DESTINATION.
  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 (там, де ви бажаєте розмістити БД - ми називаємо це destina.com)
  2. Створіть привілеї БД, Користувача та належних прав, як зазначено вище, на сервері ВИЗНАЧЕННЯ
  3. Переконайтеся, що привілеї на сервері SOURCE дозволяють SOURCE_DB_USER віддалено отримувати доступ до БД - або дозволяти доступ з dest.com, або від% (% - всі та всюди, якщо вони мають правильне ім’я користувача та пароль)
  4. На сервері ВИЗНАЧЕННЯ запустіть: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzде source.com - сервер ДЖЕРЕЛА (де БД наразі знаходиться)
  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 стислий? У мене виникла ця проблема з 6MB-файлом-блискавкою sql. Я розпакував його в 53MB нестиснений sql файл, і він працював. Разархівування завантаженого файлу дамп має з'їсти всю пам'ять.


0

якщо у вас є ssh доступ до сервера з mysql, ви можете розмістити файл з дампом mysql в якомусь місці, введіть консоль mysql:

mysql -u myUser myDatabase

Або якщо сервер mysql знаходиться на іншому, ніж localhost місці, і дозволяє з'єднання не тільки з localhost, ніж:

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 ви можете:

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

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