![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: egal
Firebird DB von 2.x nach 2.5 ohne character_set und collate
Hi,
ich möchte eine DB von FB 2.1 nach 2.5 migrieren. Da man in 2.5 das default character set und auch die default collation global definieren kann, hätte ich das ganze aus den Domain - und Tabellendefinitionen entfernt. Leider geht das IMHO auch mit IBExpert nicht. Mit extract metadata wird zwar character_set aus Domains und Tables entfernt. Dafür steht aber im Script bei der Definition der Domains collate de_de. Zusätzlich wird das collate de_de auch noch bei der Felddefinition angehangen, obwohl ich nur mit Domains arbeite und die collation dort ja shon definiert ist. Bevor ich mich jetzt an die Arbeit mache, ein Programm zum Anpassen des Scripts zu schreiben, frage ich mal nach, ob jemand ein anderes Tool kennt, welches das leistet (oder halt einen anderen Weg). Frank Reim |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Suchen und ersetzen?
|
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Zitat:
Also nur mit Bestätigung - und es sind bestimmt über 1000 Einträge. Aber da das Script schön in Blöcke eingeteilt ist, scheint es doch nicht so aufwändig. Ich schreib einen kleinen Parser - das geht schon. Aber - Danke Frank |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Bevor Du nach 2.5 wechselst, solltest Du in der Firebird-Mailingliste
mitlesen. Es gibt noch einige Probleme mit 2.5. Gruß Alfred |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Zitat:
Ich warte evtll. noch auf die Version 2.51. Da mein Zeitfenster für diese Aktion nicht gerade groß ist, muss der Ablauf durgetestet sein. Bei der Umstellung auf 2.1 kann ich mich an einige Fallen erinnern (Sonderzeichen in Metadaten...). Frank |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Du kannst nachträglich den default character set in der Firebird db entfernen, in dem du einfach in der rdb$database das feld rdb$character_set auf Null setzt, dann werden beim extract metadata nicht nur collations, sondern auch immer character sets ausgegeben. Das liesse sich dann ggf leichter per suchen/ersetzen umstellen.
was du aber damit meinst weiß ich nicht, das passiert zumindest in der aktuellen version eigentlich nicht (zumindest nicht in meinem Test gerade). Zitat:
|
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Zitat:
Ich habe da wohl etwas geträumt. Folgendes bezieht sich auf IBExpert und die Editoren (Domaineditor, Tabelleneditor). Der Code ist der, den IBExpert vor dem Commit anzeigt: Domain anlegen
Code:
Tabelle mit Feld
CREATE DOMAIN D_VARCHAR_100 AS
VARCHAR(10) CHARACTER SET ISO8859_1 COLLATE DE_DE
Code:
Hier wird COLLATE DE_DE noch mal an die Felddefinition angehangen, obwohl das ja durch die Domain bereits festgelegt ist.
...
ALTER TABLE T_TEST ADD BEZEICHNUNG D_VARCHAR_100 COLLATE DE_DE Das hätte ich jetzt anders erwartet. Aber vielleicht habe ich ja noch einen Denkfehler. Das bedeudet, das das Extrahieren der Metadaten fehlerfrei arbeitet. Beim Erzeugen der Felder würde ich sagen, gehört das COLLATE DE_DE nicht hin. [EDIT] So, jetzt habe ich noch mal einige Tests gemacht. Wenn man mit einem Tool wie IBExpert fast jeden Tag arbeitet, stellt sich dann schon mnal gewisse Blindheit ein. Das Problem mit den collate in den Feldern entsteht dadurch, dass IBExpert die Collation aus der Domain beim Anlegen eines Feldes prinzipiell vorträgt. Man muss es dann halt bei jedem Anlegen eines CHAR/VARCHAR Feldes den Text aus dem Feld SOrtierung rauslöschen. Ich hoffe, das Holger das Verhalten anpasst.[/EDIT] Zitat:
Vielen Dank Frank [EDIT] |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Auch Firebird 2.1.x ist nicht Bug-Free und die Neuerungen in 2.5 sind schon sehr interessant für den Produktiveinsatz. :-D
lg, Thomas |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Zitat:
Und als kleiner Workaround: mach einfach in deiner DB folgenden Update und schon sind die alle raus
Code:
Background: Domain werden in RDB$FIELDS gespeichert, aber erst über RDB$RELATION_FIELDS den Tabellenfeldern zugewiesen, und da gibt es noch Möglichkeiten, Domaineigenschaften zu überschreiben. Der Tabellenfeldeditor in IBExpert macht das mit der Collate Anweisung bei Feldern auf Basis von Domains bisher immer ungefragt, aber zukünftig nicht mehr.
UPDATE RDB$RELATION_FIELDS SET RDB$RELATION_FIELDS.RDB$COLLATION_ID=NULL
Vielen Dank für den Hinweis |
AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate
Zitat:
Vielen Dank auch für den Workaround. Das hilft mir wirklich sehr. Frank Reim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz