#1064 – You have an error in your SQL syntax; USING BTREE

В категорії Підказки от 26 Листопада, 2012. Автор admin

#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 ‘USING BTREE)
В 5.1 был немного изменён синтаксис использования типа индексов BTREE, что и вызывало проблему. Решается это заменой строки в которой есть запись “USING BTREE” с:

KEY `idx_usergroup_nested_set_lookup` (`lft`,`rgt`) USING BTREE

на

KEY `idx_usergroup_nested_set_lookup` USING BTREE (`lft`,`rgt`)

Теги: ,

MYSQLDUMP

В категорії Підказки от 25 Березня, 2012. Автор admin

Для того чтобы сохранить резервную копию базы данных MySql принято использовать так называемые дампы. Это текстовый файл содержащий структуру и содержимое базы данных в формате SQL запросов.

 Итак, делаем дамп базы используя консольный клиент mysqldump, зайдя на сервер по ssh. Снимать будем дамп базы user_database с сервера mysql12.leaderhost.ru, логин для доступа к базе у нас user_admin и пароль 12345.

mysqldump -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database > user_database.sql

 Наш дамп будет сохранен в файл user_database.sql. Если Вы ошибетесь в логине или пароле то получите ошибку на подобии этой:

mysqldump: Got error: 1045: Access denied for user ‘user_admin’@’91.195.124.30’ (using password: YES) when trying to connect

Если всё нормально, то никаких сообщений не выдастся. Посмотрим какого размера получился дамп:

 [user@s12 ~]$ du -hs user_database.sql

872K user_database.sql

 Восстанавливаем базу MySql из дампа

 Выше описано как сделать дамп базы MySQL (резервную копию), далее опишем необходимые действия для восстановления базы из дампа.

 Итак, таже база и теже логины/пароли, заходим на сервер по Ssh и выполняем в папке в которой лежит наш дамп. Например дамп user_database.sql лежит в папке сайта hostingfaq.ru.

cd hostingfaq.ru/

mysql -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database < user_database.sql

Ошибки возникающие при работе с дампами

 Не редко, при восстановлении базы из дампа, можно столкнутся с такой ошибкой:

 #1062 – Duplicate entry ‘N?-665’ for key 1

 Зачастую, ошибка возникает из-за того что кодировка таблицы одна, а у данных другая. Что можно поделать? как правило в дампе базы сменить все указатели кодировки на одну. Например, данные в дампе в кодировке cp1251, а где-то встречается указатель на utf8:

 ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

ENGINE=MyISAM DEFAULT CHARSET=cp1251;

 В этом случае просто заменим utf8 на cp1251, сделать это можно вручную в текстовом редакторе с помощью “поиск и замена” или по Ssh

sed -i “s/utf8/cp1251/” user_database.sql

После чего снова попробовать восстановить базу из дампа. Нелишним будет принудительно задать кодировку ключом –default-character-set

mysql –default-character-set=cp1251 -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database < user_database.sql

Другая ошибка может возникать в процессе создания дампа:

mysqldump: Got error: 1044: Access denied for user ‘user_database’@’%’ to database ‘user_database’ when using LOCK TABLES

Обойти её и успешно выполнить дамп поможет ключ –skip-opt

mysqldump –skip-opt -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database > user_database.sql

Теги: ,

Экспорт/импорт mysql баз через ssh

В категорії Підказки от 14 Листопада, 2011. Автор admin

1. Импорт.

В принципе можно воспользоваться командой :

mysql -uroot -proot_pass db_name < db_name.sql

но она содержит подводные камни в виде того, что если например база уже создана, то импорт может оказаться неудачным.
Самым лучшим выходом из ситуации будет ипморт напрямую через cli MySQL :

Заходим в MySQL – mysql -uroot -proot_pass
далее делаем – use db_name;
далее импортируем командой – source db_name.sql;

2. Экспорт.

Делаем экспорт посредством удобного mysqldump :

mysqldump -uroot -proot_pass db_name > db_name.sql

Теги: ,