2017-10-18 2 views
0

Ich habe ein Problem mit ltree Erweiterung auf Postgresql 9.6.5Syntaxfehler in Abfrage ltree auf Postgresql mit 9.6.5

Ich habe eine Tabelle mit der folgenden DDL genannt Kategorie (ich es ein wenig vereinfacht):

CREATE TABLE dictionary.category 
(
    id serial not null constraint category_pkey primary key, 
    name text not null, 
    parent_id integer constraint category_parent_id_fkey references dictionary.category 
); 

nach der Erstellung ltree Erweiterung:

CREATE EXTENSION ltree; 

ich versuche, einige Abfrage zB zu machen:

SELECT id, text2ltree(name) FROM dictionary.category; 

oder

SELECT id, name::ltree FROM dictionary.category; 

oder Spaltenname

SELECT id, text2ltree("name") FROM dictionary.category; 

Flucht Und es gibt mir:

ERROR: syntax error at position 12 

die ganze Zeit

Aber wenn ich versuche:

SELECT id, text2ltree('a.b.v') FROM dictionary.category; 

oder

SELECT id, text2ltree(id::text) FROM dictionary.category 

es gibt mir korrekte Ergebnisse.

Ich nehme an, es hängt damit zusammen, dass Name ein reserviertes Schlüsselwort ist. Aber warum fliehen nicht? Auch habe ich versucht, eine Spalte in etwas wie abcd umzubenennen es gibt mir Syntaxfehler sowieso.

Vielen Dank im Voraus!

Antwort

0

Beantworten meiner eigenen Frage. Es scheint, dass diese Fehlermeldung nicht mit einer Abfrage selbst zusammenhängt. Es bezieht sich auf einen Text, der in einem Pfad enthalten sein kann. Es scheint, dass l Baumpfad nur alphanumerische Zeichen erlaubt und nichts mehr.

SELECT id, text2ltree(regexp_replace(name, '[^[:alpha:]]', '', 'g')) FROM dictionary.category; 

gibt korrekte Ergebnisse zurück.

Wie auch immer, die Fehlermeldung ist sehr irreführend.

Verwandte Themen