postgreSQL - получить ошибку неверного входного значения для перечисления - PullRequest
0 голосов
/ 15 апреля 2020

таблица:

create type status as enum ('new_ride', 'ride_assigned', 'ride_start', 'ride_end', 'ride_cancelled');

create table ride_status (
id int primary key,
ride_id int,
created_at timestamp,
status status,
status_timestamp timestamp,
foreign key (ride_id) references ride (id));

insert into ride_status values
(1, 1, '2020-04-01 11:00:00', 'ride_start', '2020-04-01 11:05:00'),
(2, 1, null, 'ride_end', '2020-04-01 11:15:00'),
(3, 2, null, 'ride_start', '2020-04-02 12:06:00'),
(4, 2, null, 'ride_end', '2020-04-02 12:25:00'),
(5, 3, null, 'ride_start', '2020-04-03 14:05:00'),
(6, 3, null, 'ride_end', '2020-04-03 14:35:00'),
(7, 4, null, 'ride_start', '2020-04-04 11:10:00'),
(8, 4, null, 'ride_end', '2020-04-04 11:35:30'),
(9, 5, null, 'ride_start', '2020-04-04 15:05:00'),
(10, 5, null, 'ride_end', '2020-04-04 15:15:45');

перечисление и таблица успешно созданы, но при выполнении insert into выдается следующая ошибка:

ERROR:  invalid input value for enum status: "ride_start"
LINE 2: (1, 1, '2020-04-01 11:00:00', 'ride_start', '2020-04-01 11:0...
                                      ^
SQL state: 22P02
Character: 62

есть идеи об этой ошибке? спасибо

ОБНОВЛЕНИЕ: с помощью отсюда, я думаю, это postgresql версия 12, которая имеет эту проблему. когда я попробовал это в v11, оригинальное решение также работает. Для обхода v12 просто переименуйте enum в имя, отличное от имени столбца. Спасибо за помощь здесь!

1 Ответ

0 голосов
/ 15 апреля 2020

Проблема в status status в вашем операторе создания, вы должны присвоить другое имя столбца, чем имя типа ENUM.

Попробуйте это, оно должно работать как положено - посмотрите здесь sqlfiddle

create type r_status as enum ('new_ride', 'ride_assigned', 'ride_start', 'ride_end', 'ride_cancelled');

create table ride_status 
(
    id int primary key,
    ride_id int,
    created_at timestamp,
    status r_status,
    status_timestamp timestamp,
    foreign key (ride_id) references ride (id)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...