4

Так что я думаю, что у меня проблемы с компонентом Joomla, потому что у меня нет моей настройки БД для использования движка InnoDB. Я думаю, что это потому, что я ничего не изменил в работе MySQL и считаю, что MyISAM является дефолтом. Есть ли способ проверить это в первую очередь?

Во-вторых, если то, что я считаю верным, знает ли кто-нибудь какие-либо хорошие ресурсы / руководства для преобразования БД из одного механизма в другой? Я нашел несколько, но спешу отметить, что я большой новичок в SQL, и это оказывается своего рода боевым крещением. Руководства, на которые я смотрел до сих пор, несколько различаются по своему подходу, и многие команды объединены, что усложняет понимание происходящего. Большим преимуществом является то, что этот сервер является виртуальным, и я уже сделал несколько снимков, поэтому любые ошибки не являются существенными.

Я использую стек Lamp с Ubuntu 9.10 x64, Apache 2.2.12, MySQL 5.1.37 и PHP версии 5.2.10-2

2 ответа2

5

В ответ на первую часть вашего вопроса. Самый быстрый способ определить, какой механизм хранилища данных по умолчанию используется, - это выполнить следующее;

$mysql -h localhost -u user -p -e "SHOW ENGINES"

Это приведет к появлению списка поддерживаемых движков, к которым подключен сервер БД, к которому вы подключены. По умолчанию будет указано "Support DEFAULT", указывающее, какой механизм настроен как сервис по умолчанию.

По поводу второй части вашего вопроса. Есть несколько способов сделать это. Первый способ - использовать SQL, чтобы вы могли выполнить команду;

ALTER TABLE mytable ENGINE = InnoDB;

Это может иметь ряд недостатков. Это займет некоторое время, если ваш стол тоже большой. См. Http://dev.mysql.com/doc/refman/5.1/en/alter-table.html для получения дополнительной информации об этом. Но если это быстрый и грязный метод, это будет хорошо.

Другой вариант - использовать mysqldump для выгрузки всей вашей базы данных MyISAM. Затем вы можете изменить результирующий дамп SQL, используя find replace;

sed -i 's/MyISAM/INNODB/g' file.sql

Однако, как предложил Паткос, я бы выкинул только синтаксис create, а затем создал новый db, но установил его механизм по умолчанию для этой схемы как Innodb и повторно импортировал данные

2

верю, что MyISAM является неплатежеспособным. Есть ли способ проверить это в первую очередь?

Да, это так, просто посмотрите в my.ini (или my.cnf) и найдите myisam, innodb или engine. Если ничего не указано, проверьте на сайте mysql значение по умолчанию для вашей версии mysql. Вы можете узнать, как таблицы были созданы с помощью команды SHOW TABLE STATUS , и найти движок в выходных данных.

Кто-нибудь знает какие-либо хорошие ресурсы / руководства для преобразования БД с одного двигателя на другой?

Самый простой способ, который я знаю, это просто текущая база данных mysqldump, чем открыть файл дампа и заменить все myisam на innodb. Затем удалите старую базу данных, создайте новую и импортируйте из измененного дампа.

PS: движки находятся на уровне таблицы, а не на уровне базы данных!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .