Как исправить ошибку 1005 (errno:-1) при создании таблицы InnoDB?
Устанавливаю vbulletin 5 и в процессе установки, на шаге 2 вываливается постоянно, следующее сообщение:
An error has occurred with your database. Please contact vBulletin Support for assistance.
Module: install, Step 2 Database Error:1005
Can't create table 'world.usercsscache' (errno: -1)
Query:
CREATE TABLE usercsscache (
userid INT UNSIGNED NOT NULL DEFAULT '0',
cachedcss TEXT,
buildpermissions INT UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (userid)
) ENGINE = InnoDB
На этом установка прерывается. Пробовал обращаться к разработчикам форума - но они ничего действенного предложить не смогли.
Из описаний в сети понимаю, что проблема с ключами, причем errno -1 - указывает на конфликт имен столбца данной таблицы, со столбцами встроенных InnoDB таблиц. Но как решить эту проблему - найти не удается.
В сети часто встречается описание что, мол надо удалить эту бд и создать полностью новую и чистую - тогда проблема решается, но не в моем случае. Пробовал многократно различными способами удалять базу данных, и создавать новую и в нее устанавливать - не помогает. Если же InnoDB заменить на MyISAM - то создание этой таблицы проходит успешно, но такая же проблема всплывает на следующей InnoDB таблице с ключевым полем userid. При этом до "данного момента", уже в базе данных было успешно создано порядка 180 таблиц типа InnoDB.
Пробовал даже установить форум VB более ранней версии (подумав что это баг самого форума), но даже при установке более старой версии тоже возникает такая ошибка. Таким образом - проблема все-таки в моей MySQL базе.
PHP 5.4.35-0+deb7u2,
MySQL server "5.5.40-0+wheezy1-log"
Подскажите пожалуйста, хотя бы в каком направлении необходимо двигаться и что смотреть/менять в настройках бд?
Я бы даже сказал, что проблема конкретно в вашем сервере.
mysql> CREATE TABLE usercsscache (
-> userid INT UNSIGNED NOT NULL DEFAULT '0',
-> cachedcss TEXT,
-> buildpermissions INT UNSIGNED NOT NULL DEFAULT '0',
-> PRIMARY KEY (userid)
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.23 sec)
mysql> select version();
+------------------+
| version() |
+------------------+
| 5.5.40-0+wheezy1 |
+------------------+
1 row in set (0.02 sec)
mysql>
(емнип, просто дефолтная установка из штатного репозитория)
Могу сказать, что искать надо в сторону именно mysql.
Свой краткий гуглинг привёл к решениям с drop database и create database (mysqldump и последующий импорт обратно по необходимости)
Проблему удалось решить-таки, изменив настройку "innodb_file_per_table" с состояния ON в состояние OFF. То есть теперь все таблицы записываются в один файл.
Трудно сказать почему это влияет, но могу предположить, что может быть каждый файл инкапсулирует свою область видимости. А в VBulletin активно используются внешние зависимости между таблицами. Может быть из-за того, что таблицы были в разных файлах - невозможно было установить связи по ключевым полям таблиц.
Но если честно Mysql знаю пока плохо, поэтому может быть глупость написал. Но, проблема решилась именно такой перенастройкой.