Имя: Пароль:
1C
1С v8
1C 8.2 + Oracle = ORA-01450 превышена максимальная длина ключа
0 Мэс33
 
10.07.13
10:19
Добавил в 1С регистр сведений. При попытке обновить конфу, появляется ошибка.
---------------------------------------------
В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
Индекс не удалось создать с использованием табличного пространства V81C_INDEX
по причине:
Ошибка СУБД:
ORA-01450 превышена максимальная длина ключа.

Возможной причиной ошибки является использование большого количества строковых измерений регистра.
Попытка создать индекс в табличном пространстве V81C_INDEX_BIG не была предпринята из-за отсутствия табличного пространства.
---------------------------------------------

Установил у всех измерений и ресурсов  "Не индексировать" - обновилось.
Пытаюсь хотя для одного измерения добавить значение "Индексировать" - повторяется вышеуказанная ошибка.

Кто-нибудь сталкивался с этим? И да, релиз 8ки древний - 15ый (времени нет обновить релиз).
1 zva
 
10.07.13
10:34
А в измерениях есть строки неограниченной длины?
2 Базис
 
naïve
10.07.13
10:51
За  "использование ... строковых измерений регистра" надо сразу долго бить учебником по теории реляционных БД.
3 mistеr
 
10.07.13
11:13
(0) В Oracle есть ограничение на общую длину ключа индекса (в отличие от MSSQL, где ограничение на количество столбцов, составляющих ключ). Вот на него 1С и нарывается.

Ошибка именно при создании регистра, данных там еще нет?
4 mistеr
 
10.07.13
11:13
(2) Не всегда.
5 Базис
 
naïve
10.07.13
11:16
(4) Это будет не регистр. Справочник, табличка, вот это всё - но не регистр.


Помню, как открывался период в ТиС после добавления клиентом пары строковых измерений в РН. Целый день, пока я не приехал.
6 mikecool
 
10.07.13
11:17
(5) и что было когда приехал?
7 МихаилМ
 
10.07.13
11:27
(3) ms sql тоже есть ограничение

http://msdn.microsoft.com/ru-ru/library/ms191241(v=sql.90).aspx
8 mistеr
 
10.07.13
11:29
(5) Так ты про Семерку? Я тоже про нее много страшилок знаю.
9 МихаилМ
 
10.07.13
11:33
(5)
в 77 все внутренние ид - строки
10 mistеr
 
10.07.13
11:38
(2) Разработчиков типовых не забудь побить. А то они штрихкоды неправильно хранят.
11 mistеr
 
10.07.13
11:39
(7) Спасибо, буду знать. 900 байт маловато, в Oracle гораздо больше.
12 Мэс33
 
10.07.13
12:05
Сорри, уходил на обед.
(1) В измерениях есть строки переменной длины, сама длина установлена к примеру "100".
(3) Да, при создании.
13 Мэс33
 
10.07.13
12:07
Да, и в ресурсах есть строки переменной длины.
14 Мэс33
 
10.07.13
12:09
(2) Может и надо бить, но я взял пример модуля на инфостарте, видимо там никто с ораклом не работал и с такой ошибкой не сталкивался.
15 mzelensky
 
10.07.13
12:22
(12) Убери хотя бы до "90".
16 mistеr
 
10.07.13
12:38
(12) Странно, по идее ошибка случается при вставке данных.

В 14-м релизе добавили способ борьбы с этой ошибкой. Цитата из V8Update.htm:
-------------------
Реализована поддержка использования отдельного табличного пространства в Oracle Database в случае, если при реструктуризации информационной базы или загрузки информационной базы (из файла .dt) генерируется ошибка "ORA-01450. Табличное пространство (с именем "V81C_INDEX_BIG") не создается автоматически и должно быть создано администратором базы данных".

То есть нужно создать это ТП вручную с большим размером блока, например 16К.
17 mistеr
 
10.07.13
13:04
(15) Интересно, с какого потолка взята цифра?
Максимальная длина не имеет значения, имеет значение размер реальных данных.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший