Модератор
Юрій
(@yube)
Кажется, это ограничение InnoDB. Переведите базу на MyISAM.
При установке WordPress он сам создаёт таблицы в базе. Как сделать чтобы он создавал таблицы типа MyISAM, а не InnoDB?
Atrax
(@atrax)
Ethical engineer
База данных в любом случае создается ДО установки. Создайте ее правильно, если не можете сами — попросите хостера.
Модератор
Юрій
(@yube)
Таблицы создаются в соответствии с настройками MySQL. Скорее всего, у Вашего в my.ini написано
default-storage-engine=INNODB
Если сервер свой, то поменяете без труда на
default-storage-engine=MYISAM
Главное — не забыть перезапустить mysqld.
Если сервер чужой, то можно в /wp-admin/includes/schema.php попробовать переопределить переменную типа таблиц перед всеми запросами:
$wp_queries="SET table_type='MyISAM';
CREATE TABLE $wpdb->terms (
term_id bigint(20) NOT NULL auto_increment,
name varchar(55) NOT NULL default '',
...
Или дописать к запросам на создание страниц прямое указание Storage Engine (не знаю как это будет по-русски). Получится типа так:
$wp_queries="CREATE TABLE $wpdb->terms (
term_id bigint(20) NOT NULL auto_increment,
name varchar(55) NOT NULL default '',
slug varchar(200) NOT NULL default '',
term_group bigint(10) NOT NULL default 0,
PRIMARY KEY (term_id),
UNIQUE KEY slug (slug)
) ENGINE=MyISAM $charset_collate;
и так далее со всеми CREATE TABLE.
Может еще еще какое-то решение.
Можно изменить тип созданных таблиц:
ALTER TABLE название_таблицы ENGINE = MYISAM
Модератор
Юрій
(@yube)
Можно, Сергей. И через phpmyadmin можно в два клика. Но только если установка прошла без ошибок. Я так делал для плагина related posts. Но если установка не проходит, то что меняй, что не меняй — толку мало. Особенно, если таблицы не создались 🙂
Точно 🙂 Тогда можно создать файл wp-content/db.php:
<?php
require_once(ABSPATH . WPINC . '/wp-db.php');
$wpdb->query("SET table_type='MyISAM'");
?>
Этот запрос будет выполняться в первую очередь.
Модератор
Юрій
(@yube)
Интересный маневр. Заценил. Респект.