Задавайте вопросы, мы ответим
Вы не зашли.
Всем здравствуйте!
Столкнулся с проблемой, которую никак не удается решить.
Ситуация следующая:
устанавливаю 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"
Подскажите пожалуйста, хотя бы в каком направлении необходимо двигаться и что смотреть/менять в настройках бд? Сервер VPS, поэтому смогу получить любую информацию из него касательно базы данных.
Отредактированно VsVoland (29.12.2014 20:56:20)
Неактивен
Проблему удалось решить установив настройку "innodb_file_per_table" в состояние OFF.
Неактивен
Причины не удалось выяснить? Было ли свободное место на диске?
Неактивен
Да, места свободного полно. Сервер только купили, там еще ничего нет.
Я плохо знаю Mysql, поэтому может быть это глупая мысль, но могу предположить: дело в том что VBulletin активно использует внешние зависимости между таблицами своей бд, через внешние ключи. Собственно текст ошибки говорит, что проблема именно в них. Если настройка innodb_file_per_table стоит в положении ON, то каждая таблица записывается в отдельный файл. Насколько я понял по документации, каждый такой файл формирует свою область видимости, и может быть из-за этого не удавалось выстроить эти зависимости. А когда настройка innodb_file_per_table в положении OFF - то все таблицы записываются в один файл, формирующий одну область видимости, в рамках которой уже легко прослеживаются (выстраиваются? как правильно сказать?) зависимости по внешним ключам.
Может быть причина в этом?
Отредактированно VsVoland (30.12.2014 09:53:05)
Неактивен
Странно, так как способ хранения (в одном хранилище или в отдельных файлах) не должен быть связан с логикой работы базы (внешние ключи).
(errno: -1) говорит о том, что код ошибки толком не определен
Неактивен
А последовательность, в которой форумом создаются таблицы с внешними ключами - имеет значение? Mожет в этом случае как-то влиять настройка innodb_file_per_table?
Может быть это все-таки какая-то проблема движка форума... Например, он пытается создать таблицу зависимую от какого-то внешнего ключа, определенного в другой таблице, которая еще не создана....
Неактивен
Настройка file_per_table не должна влиять на требования, необходимые для создания ключа. Может быть какой-то сбой в хранилище - в логе ошибок mysql что-нибудь есть?
Неактивен