[ОТВЕТА НЕТ] Проблемы с установкой OpenID

Файл dump.sql в плагине не дампиться к базе. Пробывал вручную.
CREATE TABLE IF NOT EXISTS `prefix_openid` (
  `user_id` int(11) unsigned NOT NULL,
  `openid` varchar(250) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`openid`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `prefix_openid_tmp` (
  `key` varchar(32) NOT NULL,
  `openid` varchar(250) NOT NULL,
  `date` datetime NOT NULL,
  `confirm_mail_key` varchar(32) NOT NULL,
  `confirm_mail` varchar(100) NOT NULL,
  `data` text NOT NULL,
  PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Этот запрос работает. Две таблицы создаются.

А вот этот нет:
ALTER TABLE `prefix_openid` ADD CONSTRAINT `prefix_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Следовательно не работает и этот:
ALTER TABLE  `prefix_user` CHANGE  `user_mail`  `user_mail` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;


Кто поможет разобраться?

7 комментариев

avatar
Текстовый описатель ошибки какой? У Вас таблица prefix_user присутствует? :) вероятно, в конфиге установки вместо предлагаемого prefix следует ввести реальное значение префикса к таблицам в Вашей базе.
  • SVK
  • 0
avatar
После этого запроса:
ALTER TABLE `prefix_openid` ADD CONSTRAINT `prefix_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Выдаёт ошибку:
#1005 - Can't create table 'имя_базы_данных.#sql-4c5_16d6c26' (errno: 150)

Таблицы prefix_user нет, т.к. никто её не создавал.
avatar
Вот дефолтные таблицы LS и у них всех есть префикс, который спрашивала система при установке — в моём случае это: ls_

И все Ваши SQL`и у меня отлично выполнились, при условии замены prefix_ на ls_
avatar
Не знаю ребята в чём проблема!
Префиксы переименовал. Но запрос:
ALTER TABLE `prefix_openid` ADD CONSTRAINT `prefix_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

так и не работает.

Я сделал вот так (вручную указав связи):
ALTER TABLE `sp_openid` ADD FOREIGN KEY ( `user_id` ) REFERENCES `имя_базы`.`sp_openid` (
`user_id`
) ON DELETE CASCADE ON UPDATE CASCADE ;

При попытке регистрации нового юзера вылазит ошибка:
SQL Error: Cannot add or update a child row: a foreign key constraint fails (`имя_базы`.`sp_openid`, CONSTRAINT `sp_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sp_openid` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE) at /home/сайт/domains/сайт.ру/public_html/plugins/openid/classes/modules/openid/mapper/Openid.mapper.class.php line 32
Array ( [code] => 1452 [message] => Cannot add or update a child row: a foreign key constraint fails (`имя_базы`.`sp_openid`, CONSTRAINT `sp_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sp_openid` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE) [query] => INSERT INTO sp_openid SET `user_id`='9', `openid`='vk_182101581', `date`='2013-03-05 11:36:25' [context] => /home/сайт/domains/сайт.ru/public_html/plugins/openid/classes/modules/openid/mapper/Openid.mapper.class.php line 32 ) 

Ребята дайте кто-нить внятный ответ!
avatar
>так и не работает.
должен работать с соответствующей заменой:
ALTER TABLE `sp_openid` ADD CONSTRAINT `sp_openid_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sp_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;


Вы первые две таблицы пересоздали? т.е. с каким они префиксом сейчас?
avatar
теперь префикс sp_ как у всех таблиц.
мне кажеться что то с
ADD CONSTRAINT `sp_openid_ibfk_1`
avatar
>мне кажеться что то с
к моменту выполнения у Вас должны присутствовать
таблицы sp_openid, sp_user
в обоих таблицах поля user_id
имя sp_openid_ibfk_1 по большому счёту неважно — но оно должно быть к этому моменту не задействовано

я бы предложи удалить таблицы *_openid и *_openid_tmp и попробовать снова
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.