SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.12.2014 20:51:23

VsVoland
Участник
Зарегистрирован: 29.12.2014
Сообщений: 7

InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Всем здравствуйте!
Столкнулся с проблемой, которую никак не удается решить.
Ситуация следующая:
устанавливаю 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)

Неактивен

 

#2 29.12.2014 23:45:19

VsVoland
Участник
Зарегистрирован: 29.12.2014
Сообщений: 7

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Проблему удалось решить установив настройку "innodb_file_per_table" в состояние OFF.

Неактивен

 

#3 30.12.2014 00:59:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Причины не удалось выяснить? Было ли свободное место на диске?

Неактивен

 

#4 30.12.2014 09:51:49

VsVoland
Участник
Зарегистрирован: 29.12.2014
Сообщений: 7

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Да, места свободного полно. Сервер только купили, там еще ничего нет.

Я плохо знаю Mysql, поэтому может быть это глупая мысль, но могу предположить: дело в том что VBulletin активно использует внешние зависимости между таблицами своей бд, через внешние ключи. Собственно текст ошибки говорит, что проблема именно в них. Если настройка innodb_file_per_table стоит в положении ON, то каждая таблица записывается в отдельный файл. Насколько я понял по документации, каждый такой файл формирует свою область видимости, и может быть из-за этого не удавалось выстроить эти зависимости. А когда настройка innodb_file_per_table в положении OFF - то все таблицы записываются в один файл, формирующий одну область видимости, в рамках которой уже легко прослеживаются (выстраиваются? как правильно сказать?) зависимости по внешним ключам.

Может быть причина в этом?

Отредактированно VsVoland (30.12.2014 09:53:05)

Неактивен

 

#5 30.12.2014 10:47:24

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Странно, так как способ хранения (в одном хранилище или в отдельных файлах) не должен быть связан с логикой работы базы (внешние ключи).

(errno: -1) говорит о том, что код ошибки толком не определен

Неактивен

 

#6 30.12.2014 11:07:22

VsVoland
Участник
Зарегистрирован: 29.12.2014
Сообщений: 7

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

А последовательность, в которой форумом создаются таблицы с внешними ключами - имеет значение? Mожет в этом случае как-то влиять настройка innodb_file_per_table?
Может быть это все-таки какая-то проблема движка форума... Например, он пытается создать таблицу зависимую от какого-то внешнего ключа, определенного в другой таблице, которая еще не создана....

Неактивен

 

#7 31.12.2014 00:54:35

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: InnoDB, ошибка 1005 (errno:-1) при создании таблицы.

Настройка file_per_table не должна влиять на требования, необходимые для создания ключа. Может быть какой-то сбой в хранилище - в логе ошибок mysql что-нибудь есть?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson