SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 22.05.2011 13:30:31

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Проблема создания таблицы

Привет всем!
Есть родительская таблица:

-- СОЗДАНИЕ ТАБЛИЦЫ КАТАЛОГОВ СЕРВИСОВ
CREATE TABLE servcatalog (
idCatalog  INT          UNSIGNED NOT NULL AUTO_INCREMENT,
nameservic VARCHAR(100)          NOT NULL,
typeservic TINYINT(3)   UNSIGNED NOT NULL,
adress     VARCHAR(200)          NOT NULL,
region     TINYINT(3)   UNSIGNED NOT NULL,
phone      VARCHAR(30)           NOT NULL,
email      VARCHAR(50)           NOT NULL,
website    VARCHAR(70)           NULL,
descript   TEXT                  NOT NULL,
access     ENUM('0','1')         NOT NULL,
PRIMARY KEY (idCatalog),
INDEX   typeservic (typeservic)
) ENGINE = InnoDB COMMENT = 'Таблица Каталог сервисов'

Дочерняя таблица:
-- СОЗДАНИЕ ТАБЛИЦЫ ОТЗЫВОВ
CREATE TABLE servOtziv (
idOtziv     INT UNSIGNED NOT NULL AUTO_INCREMENT,
nameuser    VARCHAR(30) NOT NULL,
maseg       VARCHAR(200) NOT NULL,
ocenka      TINYINT(3) UNSIGNED NOT NULL,
idCatalog   INT UNSIGNED NOT NULL,
PRIMARY KEY (idOtziv),
INDEX ixCatalog (idCatalog),
CONSTRAINT ixCat FOREIGN KEY (idCatalog) REFERENCES  servcatalog (idCatalog)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB COMMENT = 'Таблица отзывов сервисов'

При создании табл. servOtziv с внешним ключом выдает постоянно ошибку:
Error Code: 1005
Can't create table '.\auto\servotziv.frm' (errno: 121)

В чем проблема??? Типы столбцов совпадают почему не можно создать таблицу с внешним ключом. Спасибо!

Неактивен

 

#2 22.05.2011 14:57:16

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

Заметил следующее. Получается так: к родительской таблице устанавливаются связи с двома таблицами: servCatMarka, servCatVid - FOREIGN KEY устанавливается без проблема, а вот когда к родительской таблице servcatalog пытаешся прикрепить еще одну таблицу с внешним кключом servOtziv, то сервер выдает ошибку: Error Code: 1005 Can't create table '.\auto\servotziv.frm' (errno: 121). Получается, что боьше чем две табл. к родителю не прикрутишь или как??? Разясните кто-может!!!

Неактивен

 

#3 22.05.2011 17:17:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Странная штука, приведите, пожалуйста, полную структуру базы; в текущем виде
всё работает ровно так, как Вы написали.

Неактивен

 

#4 22.05.2011 23:23:52

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

Вот список таблиц и их связи. Интиресно что с помощью
ALTER TABLE servOtziv ADD (CONSTRAINT fk_servOtziv FOREIGN KEY (idCatalog) REFERENCES servСatalog (idCatalog) ON DELETE CASCADE ON UPDATE CASCADE);
после создания табл. servOtziv без внешних ключей а затем добавляем - получается!!! В чем проблема что сразу невозможно создать связи???
-- СОЗДАНИЕ ТАБЛИЦЫ КАТАЛОГОВ СЕРВИСОВ
CREATE TABLE servСatalog (
idCatalog  INT          UNSIGNED NOT NULL AUTO_INCREMENT,
nameservic VARCHAR(100)          NOT NULL,
typeservic TINYINT(3)   UNSIGNED NOT NULL,
adress     VARCHAR(200)          NOT NULL,
region     TINYINT(3)   UNSIGNED NOT NULL,
phone      VARCHAR(30)           NOT NULL,
email      VARCHAR(50)           NOT NULL,
website    VARCHAR(70)           NULL,
descript   TEXT                  NOT NULL,
access     ENUM('0','1')         NOT NULL,
PRIMARY KEY (idCatalog),
INDEX   typeservic (typeservic)
) ENGINE = InnoDB COMMENT = 'Таблица Каталог сервисов'


-- СОЗДАНИЕ СВЯЗУЮЩЕЙ ТАБЛИЦЫ
CREATE TABLE servCatMarka (
idCatalog INT UNSIGNED NOT NULL,
Id_Marka SMALLINT(11) UNSIGNED NOT NULL,
INDEX ixCatalog (idCatalog),
INDEX ixMarka   (Id_Marka),
CONSTRAINT ixCatalog FOREIGN KEY (idCatalog) REFERENCES  servCatalog (idCatalog)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB COMMENT = 'Таблица связующая таблицы: servCatalog and markaauto';


-- СОЗДАНИЕ СВЯЗУЮЩЕЙ ТАБЛИЦЫ
CREATE TABLE servCatVid (
idCatalog INT UNSIGNED NOT NULL,
idVid     INT UNSIGNED NOT NULL,
INDEX ixCatalog (idCatalog),
INDEX ixVid     (idVid),
CONSTRAINT ixCat FOREIGN KEY (idCatalog) REFERENCES  servCatalog (idCatalog)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB COMMENT = 'Таблица связующая таблицу servCatalog and servVidrabot';

-- СОЗДАНИЕ ТАБЛИЦЫ ОТЗЫВОВ
CREATE TABLE servOtziv (
idOtziv     INT UNSIGNED NOT NULL AUTO_INCREMENT,
nameuser    VARCHAR(30) NOT NULL,
maseg       VARCHAR(200) NOT NULL,
ocenka      TINYINT(3) UNSIGNED NOT NULL,
idCatalog   INT UNSIGNED NOT NULL,
PRIMARY KEY (idOtziv),
INDEX ixCatalog (idCatalog)
) ENGINE = InnoDB COMMENT = 'Таблица отзывов сервисов';

Неактивен

 

#5 23.05.2011 17:28:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Ааааа!  Вы убили мой мозг big_smile

Код:

mysql> select md5('servСatalog'), md5('servCatalog');
+----------------------------------+----------------------------------+
| md5('servСatalog')               | md5('servCatalog')               |
+----------------------------------+----------------------------------+
| a334e6fdf63f218c5f651a1218c622de | a636ea766039c206c2776a9cfda54664 |
+----------------------------------+----------------------------------+
1 row in set (0.00 sec)

Я надеюсь, намёк понятный smile

Неактивен

 

#6 23.05.2011 19:47:49

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

Не понял - хеширования. Причем? что вы указали за выборку? Объясните, плиз!

Неактивен

 

#7 24.05.2011 14:47:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Хэширования — чтобы отличить два слова друг от друга. Например, буква
«а» и буква «a» — разные буквы, хоть и выглядят очень похоже wink

Неактивен

 

#8 24.05.2011 15:12:42

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

Но Вы так и не объяснили, почему я не могу создать табл. из внешн. ключами (причем сдесь хеширование, я првда извеняюсь, если я что-то не понимаю!!!). Синтаксис создания правильный. Почему внешн. ключи я могу создать лишь после создания табл. сначала без внегн. ключей, а лишь затем с помощьюю ALTER TABLE servOtziv ADD (CONSTRAINT fk_servOtziv FOREIGN KEY (idCatalog) REFERENCES servСatalog (idCatalog) ON DELETE CASCADE ON UPDATE CASCADE); добавляю ключи???

Неактивен

 

#9 24.05.2011 16:24:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Синтаксис правильный, а вот название таблички неправильное (хотя и
похожее). Когда копируете правильное название — работает.

Неактивен

 

#10 24.05.2011 17:07:12

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

Так получается проблема в названиях таблиц. Возможно при наборе названия табл. какая-то из букв была напечатана на рус. языке и это несработало? Верно!!!

Неактивен

 

#11 24.05.2011 17:12:25

yuriy
Завсегдатай
Зарегистрирован: 24.10.2010
Сообщений: 76

Re: Проблема создания таблицы

И еще одна задачка: Создаю родительскую таблицу

CREATE TABLE servСatalog (
idCatalog  INT          UNSIGNED NOT NULL AUTO_INCREMENT,
nameservic VARCHAR(100)          NOT NULL,
typeservic TINYINT(3)   UNSIGNED NOT NULL,
adress     VARCHAR(200)          NOT NULL,
region     TINYINT(3)   UNSIGNED NOT NULL,
phone      VARCHAR(30)           NOT NULL,
email      VARCHAR(50)           NOT NULL,
website    VARCHAR(70)           NULL,
descript   TEXT                  NOT NULL,
access     ENUM('0','1')         NOT NULL,
PRIMARY KEY (idCatalog),
INDEX   typeservic (typeservic)
) ENGINE = InnoDB DEFAULT CHARSET=cp1251 COMMENT = 'Таблица Каталог сервисов'


Вылазит ошибка: #1146 - Table 'test.servСЃatalog' doesn't exist
Хотя пишет что табл. создана. Что это еще такое???

Отредактированно yuriy (24.05.2011 17:18:37)

Неактивен

 

#12 25.05.2011 16:11:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Ѓa ← русская буква wink

Неактивен

 

#13 25.05.2011 16:26:32

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Проблема создания таблицы

Вопрос не совсем по БД, но по теме букв... У нас в сервисе тоже бывают подобные случаи, когда пользователи отправляю текст, где вместо латинских букв прописаны русские с тем же видом. Я не думаю, что кто-то переключал постоянно раскладки, чтобы вот так "выпендриться". Кто знает, почему так происходит? Всякие там пунто свитчеры вроде всё слово преобразовывают, а не отдельные буквы. Или тут дело рук различных вредоносных программ? smile


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#14 26.05.2011 00:42:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема создания таблицы

Не представляю smile

Как вариант — удачно преобразованное слово «исправили». Ну или копипаст
какой-то куска слова...

Неактивен

 

Board footer

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