ďťż
 
Postgres: troche wiecej info o bledach? ďťż
 
Postgres: troche wiecej info o bledach?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • natalia97.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com