Postgres: troche wiecej info o bledach?
Kacper Chrapa - 11-05-2007 12:31
Postgres: troche wiecej info o bledach?
Witam!
Mamy sobie tabelke,a w niej kolumne np. login varchar(10). Kiedy np. wstawiamy nowy wiersz i w kolumnie login podamy napis dluzszy niz 10 znakow,otrzymujemy komunikat w stylu: ERROR: value too long for type character varying(10)
Niestety,nie ma wzmianki o tym,o ktora kolumne chodzi... Pytanie: czy mozna jakos z postgresa wyciagnac tą informację?
Dodam ,ze w tym przypadku nie pojawia sie zaden detail czy hint (klient:psql).
Moze jest jakas funkcja "last_error_super_detail()" ? ;-))) Przekopalem dokumentacje i google,i jakos nie moge trafic na rozwiazanie...
Wersja postgresa: 8.1
Pozdrawiam serdecznie, Kacper
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
hubert depesz lubaczewski - 11-05-2007 12:31
On 2007-04-19, Kacper Chrapa <kacper_chrapa@NOSPAM.gazeta.pl> wrote: > Mamy sobie tabelke,a w niej kolumne np. login varchar(10). > Kiedy np. wstawiamy nowy wiersz i w kolumnie login podamy napis dluzszy niz > 10 znakow,otrzymujemy komunikat w stylu: > ERROR: value too long for type character varying(10)
nic mi nie wiadomo o tym jak z tego wyciągnąć nazwę pola. jest to po prostu kolejny argument by nie używać varcharów tylko normalnie textów a ewentualne ograniczenia robić constraintami.
depesz
-- quicksil1er: "postgres is excellent, but like any DB it requires a highly paid DBA. here's my CV!" :) http://www.depesz.com/ - blog dla ciebie (i moje CV)
=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 11-05-2007 12:31
hubert depesz lubaczewski wrote at 2007-04-20 08:43: > On 2007-04-19, Kacper Chrapa <kacper_chrapa@NOSPAM.gazeta.pl> wrote: >> Mamy sobie tabelke,a w niej kolumne np. login varchar(10). >> Kiedy np. wstawiamy nowy wiersz i w kolumnie login podamy napis dluzszy niz >> 10 znakow,otrzymujemy komunikat w stylu: >> ERROR: value too long for type character varying(10) > > nic mi nie wiadomo o tym jak z tego wyciągnąć nazwę pola. > jest to po prostu kolejny argument by nie używać varcharów tylko > normalnie textów a ewentualne ograniczenia robić constraintami.
trzeba dodać dla porządku że constrainty też nie podadzą jawnie nazwy pola.
no ale zawsze można dać jakąś treściwą nazwę dla samego constrainta
filip=> CREATE TABLE users ( login text, constraint "za długi login" check ( length(login) <= 10 ) ); CREATE TABLE filip=> insert into users (login) select 'za dlugi login'; ERROR: new row for relation "users" violates check constraint "za długi login"
ja osobiście wolę stosować domeny - zwłaszcza jeśli dane ograniczenie pojawia się więcej niż raz.
CREATE DOMAIN t_login text constraint "za długi login" check ( length(value) <= 10 );
F.
Herakles - 11-05-2007 12:31
hubert depesz lubaczewski wrote:
> On 2007-04-19, Kacper Chrapa <kacper_chrapa@NOSPAM.gazeta.pl> wrote: >> Mamy sobie tabelke,a w niej kolumne np. login varchar(10). >> Kiedy np. wstawiamy nowy wiersz i w kolumnie login podamy napis dluzszy >> niz 10 znakow,otrzymujemy komunikat w stylu: >> ERROR: value too long for type character varying(10) > > nic mi nie wiadomo o tym jak z tego wyciągnąć nazwę pola. > jest to po prostu kolejny argument by nie używać varcharów tylko > normalnie textów a ewentualne ograniczenia robić constraintami.
Zgoda, ale jak już kolega w tym grzebie, to niech może sprawdzi, czy jak zrobi triger before to czy wywali mu błąd od razu, czy będzie mógł sprawdzić długość łańcucha i ew. zrobić RAISE .
=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 11-05-2007 12:32
Herakles napisał(a): > hubert depesz lubaczewski wrote: > >> On 2007-04-19, Kacper Chrapa <kacper_chrapa@NOSPAM.gazeta.pl> wrote: >>> Mamy sobie tabelke,a w niej kolumne np. login varchar(10). >>> Kiedy np. wstawiamy nowy wiersz i w kolumnie login podamy napis dluzszy >>> niz 10 znakow,otrzymujemy komunikat w stylu: >>> ERROR: value too long for type character varying(10) >> nic mi nie wiadomo o tym jak z tego wyciągnąć nazwę pola. >> jest to po prostu kolejny argument by nie używać varcharów tylko >> normalnie textów a ewentualne ograniczenia robić constraintami. > > Zgoda, ale jak już kolega w tym grzebie, to niech może sprawdzi, czy jak > zrobi triger before to czy wywali mu błąd od razu, czy będzie mógł > sprawdzić długość łańcucha i ew. zrobić RAISE . > Będzie mógł zrobić RAISE. Najpierw lecą BEFORE - w kolejności alfabetycznej. Potem dane są zapisywane - wtedy sprawdzane są ograniczenia (z dokładnością do "DEFERRED"). Dalej są AFTER...
Ciekawe co się stanie jak mam 3 pola - daty, albo jakieś inne ograniczenia... Też powie, że coś gdzieś jest źle... -- Pozdrawiam, Michał Zaborowski (TeXXaS)
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plnatalia97.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|