AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird DB von 2.x nach 2.5 ohne character_set und collate

Firebird DB von 2.x nach 2.5 ohne character_set und collate

Ein Thema von dataspider · begonnen am 26. Apr 2011 · letzter Beitrag vom 28. Apr 2011
Antwort Antwort
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.261 Beiträge
 
Delphi 10.3 Rio
 
#1

Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 16:17
Datenbank: Firebird • Version: 2.5 • Zugriff über: egal
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
Frank Reim
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 17:34
Suchen und ersetzen?
  Mit Zitat antworten Zitat
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.261 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 19:23
Suchen und ersetzen?
Das war mein erster Gedanke. Aber ich kann nicht alles ersetzten, es gibt Stellen (meist SP' s), da ist es so gewollt.
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
Frank Reim
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
256 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 20:53
Bevor Du nach 2.5 wechselst, solltest Du in der Firebird-Mailingliste
mitlesen. Es gibt noch einige Probleme mit 2.5.

Gruß
Alfred
  Mit Zitat antworten Zitat
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.261 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 21:08
Bevor Du nach 2.5 wechselst, solltest Du in der Firebird-Mailingliste
mitlesen. Es gibt noch einige Probleme mit 2.5.

Gruß
Alfred
Ja, der Hinweis ist sicher richtig.
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
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
550 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 26. Apr 2011, 21:39
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:
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.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.261 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 27. Apr 2011, 10:31
was du aber damit meinst weiß ich nicht, das passiert zumindest in der aktuellen version eigentlich nicht (zumindest nicht in meinem Test gerade).
OK, Fehler von mir. Das collate steht tatsächlich in den Felddefinitionen.
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:
CREATE DOMAIN D_VARCHAR_100 AS
VARCHAR(10) CHARACTER SET ISO8859_1
COLLATE DE_DE
Tabelle mit Feld
Code:
...
ALTER TABLE T_TEST
ADD BEZEICHNUNG D_VARCHAR_100
COLLATE DE_DE
Hier wird COLLATE DE_DE noch mal an die Felddefinition angehangen, obwohl das ja durch die Domain bereits festgelegt ist.
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]
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.
Das geht dann in der Tat einfacher.
Vielen Dank

Frank

[EDIT]
Frank Reim

Geändert von dataspider (27. Apr 2011 um 14:59 Uhr)
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#8

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 27. Apr 2011, 12:38
Auch Firebird 2.1.x ist nicht Bug-Free und die Neuerungen in 2.5 sind schon sehr interessant für den Produktiveinsatz.

lg,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
550 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 28. Apr 2011, 11:02
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]
Na das ist mal ein vorbildlicher Bugreport, hab ich auf Anhieb verstanden, wird auf jeden Fall kurzfristig angepasst.
Und als kleiner Workaround: mach einfach in deiner DB folgenden Update und schon sind die alle raus

Code:
UPDATE RDB$RELATION_FIELDS SET RDB$RELATION_FIELDS.RDB$COLLATION_ID=NULL
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.

Vielen Dank für den Hinweis
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.261 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Firebird DB von 2.x nach 2.5 ohne character_set und collate

  Alt 28. Apr 2011, 14:42
Na das ist mal ein vorbildlicher Bugreport...
... und ein vorbildlicher Support!

Vielen Dank auch für den Workaround. Das hilft mir wirklich sehr.

Frank Reim
Frank Reim
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf