Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird: Character conversion fehler bei CREATE TABLE? (https://www.delphipraxis.net/152100-firebird-character-conversion-fehler-bei-create-table.html)

blackfin 11. Jun 2010 09:32

Datenbank: Firebird • Version: 2.1.3 embedded • Zugriff über: ZEOS

Firebird: Character conversion fehler bei CREATE TABLE?
 
Hallo liebe Experten,

jetzt habe ich das erste mal ein Problem mit dem Firebird.

Er hat bei einem Kunden folgende Fehlermeldung ausgespuckt:

Code:
arithmetic exception, numeric overflow, or string truncation Cannot
transliterate character between character sets At trigger 'RDB$TRIGGER_4'
The SQL: CREATE TABLE "EHXLOGTABLE" (AUTOID INTEGER NOT NULL PRIMARY KEY);
Diese Fehlermeldung finde ich verwirrend und kann damit ehrlich gesagt wenig anfangen.
Sie besagt ja, dass sie ein Zeichen nicht konvertieren konnte, aber bei DIESEM Statement?
Es wird ja nur ein Table erzeugt mit einem ID-Feld und es kommt gar keine Character Conversion in Frage, der Benutzer kann zu diesem Zeitpunkt also auch nichts eingegeben haben.
RDB$TRIGGER_4 ist nichts anderes als eine AutoIncrement-Emulation über einen Generator:

SQL-Code:
SET TERM ^ ;

CREATE TRIGGER BI_EHXLOGTABLE_AUTOID FOR EHXLOGTABLE
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.AUTOID IS NULL) THEN
      NEW.AUTOID = GEN_ID(EHXLOGTABLE_AUTOID_GEN, 1);
END^

SET TERM ; ^

Das weitere "Problem" ist, dass dieses Statement bisher immer funktioniert hat (auf anderen Rechnern).


Ist das eventuell eine beschädigte Datenbank oder woran kann das noch liegen?
Wie gesagt, das ist das erste Mal, dass ich vom Firebird eine derart "merkwürdige" Fehlermeldung bekomme, die, meiner Meinung nach, in diesem Fall keinen wirklichen Sinn macht.

Die Datenbank ist komplett UTF-8, Dialect 3.
Firebird ist die Version 2.1.3 embedded.
Komponenten sind ZEOS.

idefix2 11. Jun 2010 16:45

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
Nachdem anscheinend niemand etwas gescheites dazu zu sagen hat, meine Meinung (auch wenn ich mit Firebird auch gerade erst meine ersten Erfahrungen sammle).

1. Hat genau diese Query früher schon einmal mit Sicherheit funktioniert?
2. Hast Du versucht, die Query mit Cut and paste in einer anderen Datenbank mit der gleichen Struktur abzusetzen? Hat das dort funktioniert?

Die Antwort auf diese Fragen gibt Dir vielleicht einen Hinweis darauf, ob vielleicht wirklich die Datenbank irgendwo beschädigt ist. Was ich von anderen Systemen durchaus kenne, ist, dass ein tatsächlicher Fehler sich hinter einer schwachsinnigen Fehlermeldung verbirgt, von der man absolut nicht auf die wirkliche Fehlerursache schliessen kann.

blackfin 14. Jun 2010 09:28

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
Hallo Idefix:

1) Ja, und zwar nicht nur einmal, die Software ist ca. ein halbes Jahr schon im Einsatz und es gab da noch nie Probleme mit.
Die Query wird beim ersten Start ausgeführt, da wird der Table eben angelegt.

2) Ja, auch das habe ich getestet. Funktioniert einwandfrei.

Ich denke mal, dass es eine beschädigte Datenbank ist und werde dem Kunden mal sagen, er soll sie mir doch bitte mal herschicken :)

Danke für die Antwort!

hoika 14. Jun 2010 10:01

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
Hallo,

warum wird "EHXLOGTABLE" in Hochkommas geschrieben ?

OK, das ist nicht die Ursache,
würde mich aber doch schon interessieren.


Heiko

Andreas Schilling 14. Jun 2010 10:32

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
Läuft es da wo es funktioniert unter einer älteren Firebirdversion? Ich hatte in etwa den gleichen Fehler beim ersten Verwenden der Version 2.1.1. Der Fehler trat auf bei der Datenbankabfrage ob eine Procedure existiert. Ursache: der Zeichensatz der Tabelle rdb$procedures (Unicode_FSS). Lösung: bei der Datenbankabfrage greife ich jetzt mit einer Datenbankverbindung auf die Systemtabelle zu, bei der der Zeichensatz Unicode_FSS ist.

Gruß Andreas.

PS: Obwohl der Zeichesatz wahrscheinlich schon immer Unicode_FSS war, macht sich das erst ab Version 2.1.* bemerkbar.

DelphiBandit 14. Jun 2010 10:38

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
Der Frage von Heiko bringt mich auf eine Idee: Beim Umgang mit Firebird 2.1. aus dem IBExpert heraus ist es mir am Anfang öfter passiert, dass ich irgendwelche Strings in " (Doppelhochkomma) geschrieben habe. Das gibt dann regelmässig Fehler, irgendwie legt er Wert auf ' (Einfach) - ersetzte ich die, funktionierten die Kommandos auch bei FB2.1.

mkinzler 14. Jun 2010 10:45

AW: Firebird: Character conversion fehler bei CREATE TABLE?
 
" bewirkt ein Unterscheidung von Groß-/Kleinschreibung der Feldnamen

SQL-Code:
select * from Name;
ist normalerweise gleichbedeutend mit
SQL-Code:
select * from NAME;
Wurde aber bei der Anlage "Name" angegeben muss auch bei der Abfrage "Name" verwendet werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz