Как выбрать систему хранения данных innodb?

203
18 мая 2017, 10:23

На одном хостинге, при создании таблиц в базе данных, по умолчанию создаются таблицы myisam. И дело в том, что это нигде нельзя выбрать, чтобы по умолчанию создавались innodb.
Подскажите, как создавать таблицы innodb? т.е. допустим я устанавливаю wordpress и мне нужно, чтобы создавались таблицы innodb, а по умолчанию создаются myisam.
Можно ли как-то после установки wordpress, переопределить таблицы из myisam в innodb ?

Сейчас есть возможность проверить только на локальном сервере, на котором только innodb.
Взял код из приведённой ниже ссылки, и пытался конвертировать из innodb в myisam, но код почему-то не работает. Подскажите, что не так?

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=MyISAM;') 
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM'
AND table_schema = 'mydatabase';

второй код:

SET @DATABASE_NAME = 'name_of_your_db';
SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=MyISAM;') AS sql_statements
FROM    information_schema.tables AS tb
WHERE   table_schema = @DATABASE_NAME
AND     `ENGINE` = 'MyISAM'
AND     `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;

естественно название бд ставил правильное:
в 1м коде table_schema = 'mydatabase';
во 2м SET @DATABASE_NAME = 'name_of_your_db';
в этом участке кода ставил свою бд

Answer 1
SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=MyISAM;') 
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM'
AND table_schema = 'mydatabase';

этот код выполнит множественный вызов команд alter, наподобии такого:

ALTER TABLE wp_commentmeta ENGINE=MyISAM;
ALTER TABLE wp_comments ENGINE=MyISAM;
ALTER TABLE wp_links ENGINE=MyISAM;
ALTER TABLE wp_options ENGINE=MyISAM;
ALTER TABLE wp_postmeta ENGINE=MyISAM;
ALTER TABLE wp_posts ENGINE=MyISAM;
ALTER TABLE wp_term_relationships ENGINE=MyISAM;
ALTER TABLE wp_term_taxonomy ENGINE=MyISAM;
ALTER TABLE wp_termmeta ENGINE=MyISAM;
ALTER TABLE wp_terms ENGINE=MyISAM;
ALTER TABLE wp_usermeta ENGINE=MyISAM;
ALTER TABLE wp_users ENGINE=MyISAM;

E_p, можете пояснить, что там ещё нужно запустить?

Answer 2

Создать новую базу с двихком "MyISAM" можно так: https://dev.mysql.com/doc/refman/5.5/en/create-table.html

CREATE TABLE new_table
  (id INT, INDEX USING BTREE (id))
ENGINE = MyISAM;

Поменять старую: https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html

ALTER TABLE old_table ENGINE=MyISAM;

PS:

В вашем коде вариант

  1. Вы выбирете таблицы с innodb и создаете строку которая меняет их на MyISAM.
  2. вы так же выбераете innodb таблицы и создаете запрос который меняет их на innodb.

Ну и запрос(строку) который вам вернёт надо запустить!

Дополнил ваш вариант( https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html )

Меняем все innodb на MyISAM

SET @queryString = (
    SELECT CONCAT("ALTER TABLE ",TABLE_NAME," ENGINE=MyISAM;") 
    FROM INFORMATION_SCHEMA.TABLES
    WHERE ENGINE= "MyISAM"
    AND table_schema = "mydatabase";
);
PREPARE q FROM @queryString;
EXECUTE q;
DEALLOCATE PREPARE q;
READ ALSO
Как включить отзывы для товаров Woocommerce через MySql

Как включить отзывы для товаров Woocommerce через MySql

В карточке товара Woocommerce на вкладке "Дополнительно" есть возможность включить отзывы, отметив соответствующий чекбокс

298
Растяжение текста в TextView, Android Studio

Растяжение текста в TextView, Android Studio

Привет, не могу придумать как сделать растяжение текста на всю ширину экрана в TextView, в конце строки всегда остаются большие пробелыНадо сделать...

861
Программная установка цвета на кнопку

Программная установка цвета на кнопку

Приложение падает когда пытаюсь программно установить цвет фона кнопкиКнопку инициализировал в Java, всё связал

236
Как сохранить изображение в галерее

Как сохранить изображение в галерее

В общем есть у меня простая рисовалкаМожно рисовать простые фигуры на canvas, и сохранять полученный результат в галерею в папку Pictures

465