Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
fmcoder
- Сообщения: 46
- Зарегистрирован: 24 сен 2007, 20:57
Сообщение
fmcoder » 01 окт 2007, 22:25
Делаю 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".`
Что это такое и как лечить?
-
AnryGTR
- Сообщения: 116
- Зарегистрирован: 15 янв 2007, 15:58
Сообщение
AnryGTR » 01 окт 2007, 22:51
Ага...на какую таблицу ссылается поле ты указал, а кто будет указывать поле таблицы, на которое нужно ссылаться? Вася Пупкин что-ли?

-
fmcoder
- Сообщения: 46
- Зарегистрирован: 24 сен 2007, 20:57
Сообщение
fmcoder » 01 окт 2007, 23:57
Да я просто нашел пример, там написано:
"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."
И код там почти как мой, отличие только в названиях и типах...
Попробую указать поле.
Спасибо!
-
fmcoder
- Сообщения: 46
- Зарегистрирован: 24 сен 2007, 20:57
Сообщение
fmcoder » 02 окт 2007, 00:13
Нет, так и не вышло.
Изменил на
Код: Выделить всё
..."genre_id" int REFERENCES "Genres"("id")...
Блин, что делать?
Upd.
Все, разобрался, ошибка была из-за `"fname" varchar(350) PRIMARY KEY`.
-
AnryGTR
- Сообщения: 116
- Зарегистрирован: 15 янв 2007, 15:58
Сообщение
AnryGTR » 02 окт 2007, 07:28
`"fname" varchar(350) PRIMARY KEY`
мда...чо-то я сразу не заметил это...насчёт 350 символов эт ты загнул реально! даже однобайтовые кодировки, если не ошибаюсь могут занимать максимум 253 символа, я уже не говорю о юникоде и т.п.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 02 окт 2007, 10:35
Ну вы даёте.
fmcoder писал(а):Key size exceeds
-
fmcoder
- Сообщения: 46
- Зарегистрирован: 24 сен 2007, 20:57
Сообщение
fmcoder » 03 окт 2007, 15:45
AnryGTR писал(а):`"fname" varchar(350) PRIMARY KEY`
мда...чо-то я сразу не заметил это...насчёт 350 символов эт ты загнул реально! даже однобайтовые кодировки, если не ошибаюсь могут занимать максимум 253 символа, я уже не говорю о юникоде и т.п.
Когда я убрал оттуда PRIMARY KEY все заработало, даже с размером в 350 символов. Я где-то тут читал, что для varchar максимум в районе 32К.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 03 окт 2007, 18:47
Для варчар, не для индекса.