Insert-Problem mit jvx 2.5.1 und Postgres 9.5
12 posts
• Page 1 of 1
Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Hallo,
ich entwickle mit jvx 2.5.1 und PostgreSQL 9.5
Ich bekomme folgende Exception:
mit dieser Rückmeldung von der Datenbank:
So wie ich das sehe, müsste das das generierte Insert in diesem Fall mit einem Cast versehen werden oder nicht?
So wie in diesem Beispiel:
Ist dieses Problem noch nie aufgetreten oder hängt das mit der Datenbankversion zusammen?
Danke
Martin
ich entwickle mit jvx 2.5.1 und PostgreSQL 9.5
Ich bekomme folgende Exception:
- Code: Select all
Caused by: javax.rad.persist.DataSourceException: Insert failed! - INSERT INTO billing (customer_id, subsidiary_id, customer_name, customer_address, customer_zip, customer_city, customer_vat_id, type, cost_centre, ordered_by) VALUES (?,?,?,?,?,?,?,?,?,?) RETURNING id
at com.sibvisions.rad.persist.jdbc.PostgreSQLDBAccess.insertPostgres(PostgreSQLDBAccess.java:259)
at com.sibvisions.rad.persist.jdbc.PostgreSQLDBAccess.insertDatabaseSpecific(PostgreSQLDBAccess.java:116)
at com.sibvisions.rad.persist.jdbc.DBAccess.insert(DBAccess.java:1971)
at com.sibvisions.rad.persist.jdbc.DBStorage.executeInsert(DBStorage.java:644)
at com.sibvisions.rad.persist.AbstractStorage.insert(AbstractStorage.java:166)
....
mit dieser Rückmeldung von der Datenbank:
- Code: Select all
PostgreSQL-42804: FEHLER: Spalte »type« hat Typ billing_type, aber der Ausdruck hat Typ character varying
Hinweis: Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen.
Position: 189
So wie ich das sehe, müsste das das generierte Insert in diesem Fall mit einem Cast versehen werden oder nicht?
So wie in diesem Beispiel:
- Code: Select all
INSERT INTO pet (pet_id, pet_type, name)
VALUES (?, CAST(? AS animal_type), ?);
--or
INSERT INTO pet (pet_id, pet_type, name)
VALUES (?, ?::animal_type, ?);
Ist dieses Problem noch nie aufgetreten oder hängt das mit der Datenbankversion zusammen?
Danke
Martin
- mzeller
- Posts: 27
- Joined: Tue Apr 19, 2016 10:48 am
- Location: Vienna
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Wie sieht das create statement der Tabelle aus?
-
Support@SIB - Posts: 355
- Joined: Mon Sep 28, 2009 1:56 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Hallo,
ich habe herausgefunden, dass es mit Postgres 9.1 und dem Treiber mit der Version 9.1-901.jdbc4 funktioniert.
Das CREATE sieht so aus:
Gibt es eine Liste von unterstützten Postgres-Versionen und -Treibern?
(Ich würde nämlich gerne mit möglichst aktuellen Versionen arbeiten)
Danke
Martin
ich habe herausgefunden, dass es mit Postgres 9.1 und dem Treiber mit der Version 9.1-901.jdbc4 funktioniert.
Das CREATE sieht so aus:
- Code: Select all
CREATE TABLE public.billing
(
id integer NOT NULL DEFAULT nextval('billing_id_seq'::regclass),
customer_id integer NOT NULL,
subsidiary_id integer,
customer_name text NOT NULL,
customer_address text NOT NULL,
customer_zip text NOT NULL,
customer_city text NOT NULL,
customer_vat_id text,
date date NOT NULL DEFAULT now(),
billing_state_id integer NOT NULL DEFAULT 1,
type billing_type NOT NULL,
billing_number text,
sum_net_before_discount money,
sum_net_discount money,
sum_net_after_discount money,
basis_tax_0 money,
basis_tax_10 money,
basis_tax_20 money,
sum_tax_0 money,
sum_tax_10 money,
sum_tax_20 money,
sum_gross money,
discount percent2,
"number" bigint,
cost_centre text,
ordered_by text,
CONSTRAINT billing_pkey PRIMARY KEY (id),
CONSTRAINT billing_billing_state_id_fkey FOREIGN KEY (billing_state_id)
REFERENCES public.billing_state (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT billing_customer_id_fkey FOREIGN KEY (customer_id)
REFERENCES public.customer (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT billing_subsidiary_id_fkey FOREIGN KEY (subsidiary_id)
REFERENCES public.subsidiary (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT billing_billing_number_key UNIQUE (billing_number),
CONSTRAINT billing_unique_type_number UNIQUE (type, number)
)
WITH (
OIDS=FALSE
);
Gibt es eine Liste von unterstützten Postgres-Versionen und -Treibern?
(Ich würde nämlich gerne mit möglichst aktuellen Versionen arbeiten)
Danke
Martin
- mzeller
- Posts: 27
- Joined: Tue Apr 19, 2016 10:48 am
- Location: Vienna
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Spezielle Datentypen werden von JVx nicht gesondert behandelt, zB billing_type
Wir empfehlen immer die aktuellen JDBC Treiber zu verwenden, haben aber keine Kompatibilitätsliste oder ähnliches. Das ist auch eher die Aufgabe der Hersteller.
Wir empfehlen immer die aktuellen JDBC Treiber zu verwenden, haben aber keine Kompatibilitätsliste oder ähnliches. Das ist auch eher die Aufgabe der Hersteller.
-
Support@SIB - Posts: 355
- Joined: Mon Sep 28, 2009 1:56 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Wie wurde billing_type definiert?
-
Support@SIB - Posts: 355
- Joined: Mon Sep 28, 2009 1:56 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
billing_type ist so definiert:
Mit welcher Version DB + Treiber testet ihr eigentlich intern?
- Code: Select all
CREATE TYPE public.billing_type AS ENUM
('Auftrag',
'Lieferschein',
'Rechnung',
'Gutschrift');
Mit welcher Version DB + Treiber testet ihr eigentlich intern?
- mzeller
- Posts: 27
- Joined: Tue Apr 19, 2016 10:48 am
- Location: Vienna
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Verschieden.
In JVx ist der JDBC Treiber mit Version: 9.0-801.jdbc3 zu finden.
Die DB Versionen sind 8.4.20, 9.3.10, 9.4.9 - Linux, Windows
Es gibt in JVx auch enum tests für PostgreSQL:
Mit unseren DB Versionen bzw. dem eingesetzten JDBC Treiber sind alle JUnit Tests im grünen Bereich.
In JVx ist der JDBC Treiber mit Version: 9.0-801.jdbc3 zu finden.
Die DB Versionen sind 8.4.20, 9.3.10, 9.4.9 - Linux, Windows
Es gibt in JVx auch enum tests für PostgreSQL:
- Code: Select all
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TYPE yesno AS ENUM ('Y', 'N');
CREATE TABLE person (
name text,
current_mood mood,
active yesno
);
Mit unseren DB Versionen bzw. dem eingesetzten JDBC Treiber sind alle JUnit Tests im grünen Bereich.
-
Support@SIB - Posts: 355
- Joined: Mon Sep 28, 2009 1:56 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Verstehe ich das richtig:
ihr verwendet die postgres db 9.4.9 auch mit dem Treiber 9.0-801.jdbc3 ?
ihr verwendet die postgres db 9.4.9 auch mit dem Treiber 9.0-801.jdbc3 ?
- mzeller
- Posts: 27
- Joined: Tue Apr 19, 2016 10:48 am
- Location: Vienna
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Also ich habe nun verschiedene Treiberversionen durchprobiert.
Der aktuellste Treiber, der für mich mit Postgres 9.5 funktioniert ist die Version:
9.2-1004-jdbc41
Alle anderen darüber nicht mehr. Hier passiert dann genau die Exception, die ich oben angeführt habe.
Kann das jemand bestätigen?
Der aktuellste Treiber, der für mich mit Postgres 9.5 funktioniert ist die Version:
9.2-1004-jdbc41
Alle anderen darüber nicht mehr. Hier passiert dann genau die Exception, die ich oben angeführt habe.
Kann das jemand bestätigen?
- mzeller
- Posts: 27
- Joined: Tue Apr 19, 2016 10:48 am
- Location: Vienna
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Hm... gibts vielleicht eine Kompatibilitäts Property? Bei Oracle gibts die immer wieder.
Sieht so aus als wäre der Umgang mit enums geändert/verbessert worden.
Sieht so aus als wäre der Umgang mit enums geändert/verbessert worden.
- jvxdev
- Posts: 19
- Joined: Fri Mar 04, 2016 12:40 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Wir werden ganz einfach mit 9.5 und dem aktuellsten Treiber testen. Mal sehen woran das Problem liegt.
-
Development@SIB - Posts: 325
- Joined: Mon Sep 28, 2009 1:54 pm
Re: Insert-Problem mit jvx 2.5.1 und Postgres 9.5
Mit PostgreSQL 9.5.4 und JDBC Treiber 9.0-801 funktionieren enums und alle JVx Testfälle ohne Probleme.
Mit dem aktuellsten JDBC Treiber 9.4.1211 ist der enum Support fehlerhaft.
Das liegt aber nicht an JVx sondern an einer Änderung im JDBC Treiber:
https://www.postgresql.org/message-id/C ... .gmail.com
https://github.com/pgjdbc/pgjdbc/issues/364
Der Hinweis das enums vermieden werden sollten, ist wohl nicht die Lösung. Wenn der Treiber wieder den erwarteten SQL Type liefert, funktionieren enums wieder ohne Probleme.
Mit dem aktuellsten JDBC Treiber 9.4.1211 ist der enum Support fehlerhaft.
Das liegt aber nicht an JVx sondern an einer Änderung im JDBC Treiber:
https://www.postgresql.org/message-id/C ... .gmail.com
https://github.com/pgjdbc/pgjdbc/issues/364
Der Hinweis das enums vermieden werden sollten, ist wohl nicht die Lösung. Wenn der Treiber wieder den erwarteten SQL Type liefert, funktionieren enums wieder ohne Probleme.
- rjahn
- Posts: 41
- Joined: Sun Sep 13, 2009 1:54 pm
12 posts
• Page 1 of 1