Страница 1 из 1

Не создается foreign key.

Добавлено: 01 окт 2007, 22:25
fmcoder
Делаю 2 таблицы:

Код: Выделить всё

 'create table "Genres" ("id" int PRIMARY KEY, "name" мarchar(100) NOT NULL)'
'create table "Tracks" ("fname" varchar(350) PRIMARY KEY, "artist" varchar(70), "title" varchar(70), "year" varchar(4), "comment" varchar(70), "genre_id" int REFERENCES "Genres")'
Вроде тут все просто, но таблица не создается - пишет ошибку:

`This operation is not defined for system tables.Unsuccessful metadata update.
Key size exceeds implementation restriction for index "RDB$PRIMARY31".`

Что это такое и как лечить?

Добавлено: 01 окт 2007, 22:51
AnryGTR
Ага...на какую таблицу ссылается поле ты указал, а кто будет указывать поле таблицы, на которое нужно ссылаться? Вася Пупкин что-ли? :?

Добавлено: 01 окт 2007, 23:57
fmcoder
Да я просто нашел пример, там написано:
"Foreign key constraints are created by using REFERENCES to refer to the primary key of another table. Foreign keys link the tables together and prevent the insertion or updating of invalid data."

И код там почти как мой, отличие только в названиях и типах...
Попробую указать поле.
Спасибо!

Добавлено: 02 окт 2007, 00:13
fmcoder
Нет, так и не вышло.
Изменил на

Код: Выделить всё

..."genre_id" int REFERENCES "Genres"("id")...
Блин, что делать?

Upd.
Все, разобрался, ошибка была из-за `"fname" varchar(350) PRIMARY KEY`.

Добавлено: 02 окт 2007, 07:28
AnryGTR
`"fname" varchar(350) PRIMARY KEY`
мда...чо-то я сразу не заметил это...насчёт 350 символов эт ты загнул реально! даже однобайтовые кодировки, если не ошибаюсь могут занимать максимум 253 символа, я уже не говорю о юникоде и т.п.

Re: Не создается foreign key.

Добавлено: 02 окт 2007, 10:35
WildSery
Ну вы даёте.
fmcoder писал(а):Key size exceeds

Добавлено: 03 окт 2007, 15:45
fmcoder
AnryGTR писал(а):
`"fname" varchar(350) PRIMARY KEY`
мда...чо-то я сразу не заметил это...насчёт 350 символов эт ты загнул реально! даже однобайтовые кодировки, если не ошибаюсь могут занимать максимум 253 символа, я уже не говорю о юникоде и т.п.
Когда я убрал оттуда PRIMARY KEY все заработало, даже с размером в 350 символов. Я где-то тут читал, что для varchar максимум в районе 32К.

Добавлено: 03 окт 2007, 18:47
WildSery
Для варчар, не для индекса.