ORA-01401

roman22
Дата: 29.07.2005 10:46:51
Пытаюсь создать табличку подобного вида:
create table test_table (
sys number not null,
created date default sysdate not null,
created_by varchar2(20) default user not null
);
Получаю ошибку ORA-01401
Делаю так:
create table test_table (
sys number not null,
created date default sysdate not null,
created_by varchar2(30) default user not null
);
Table created

Oracle 8.1.7 на Windows 2000
В документации не нашел (а скорей всего плохо искал, т.к. её слишком много) упоминаний об ограничении на длину имени пользователя, но точно знаю, что на Oracle 7.3.4 нормально табличка создается.
Хочется знать с этим это связано или нет ???
dev76
Дата: 29.07.2005 10:55:59
Смотри размер поля name в sys.user$
roman22
Дата: 29.07.2005 11:01:04
dev76
Смотри размер поля name в sys.user$

у меня нет юзеров с длиной имени >= 20 символам
dev76
Дата: 29.07.2005 11:03:47
и что из этого берет то он это значение из поля длинной 30 а хочет вставить в 20
Elic
Дата: 29.07.2005 11:03:50
roman22
В документации не нашел (а скорей всего плохо искал, т.к. её слишком много) упоминаний об ограничении на длину имени пользователя
RTFM Schema Object Naming Rules (FAQ)
В любом случае таблица должна была создатся, а ошибка могла появиться только при заполнении таблицы.
dev76
Дата: 29.07.2005 11:04:51
to Elic ошибка есть и у меня тоже Oracle 8.0.6
dev76
Дата: 29.07.2005 11:11:03
А если так, то может типа
select name from sys.user$ where length(name)>20

RECOVERY_CATALOG_OWNER
AQ_ADMINISTRATOR_ROLE
roman22
Дата: 29.07.2005 11:11:46
dev76
и что из этого берет то он это значение из поля длинной 30 а хочет вставить в 20

хммм... кажется странным все это.
На Oracle 7.3.4 все нормально отрабатывает
хотя размер поля NAME из USER$ равен 30
dev76
Дата: 29.07.2005 11:18:39
После вчерашнего ждем что скажет Elic
Elic
Дата: 29.07.2005 11:24:59
dev76
to Elic ошибка есть и у меня тоже Oracle 8.0.6
Хм... У меня на 7.3.3.6 - тоже.
Это типа баг:
  • в 7.3.3 - Fixed in 7.3.4;
  • в 8.1.7 - Fixed in 9.0.1.0.0.
    Workaround:
  • Upgrade :)
  • default substr(user,1,20)