Header
Firebird - Conversione Dialect
in: Guide  So/Code: Generico Data: 17/02/2011
Ora: 13.19:14
Articolo visualizzato: 4118 volte

 

 
Dovendo lavorare ahimè qualche volta con Firebird inciampiamo in vari artefatti e vecchi db, non trovando quasi mai soluzioni ad errori su google scrivo queste due righe sul seguente errore.
 
-817 335544793 ddl_not_allowed_by_db_sql_dial Metadata update statement is not allowed by the
current database SQL dialect @ 1
 
L'errore si presenta quando si esegue un operazione non compatibile con il Dialect 1 (Interbase 5) e quindi non supportata dalle full features di firebird presenti solo nel Dialect 3.In firebird nel database e nel client si possono impostare i dialect, che sono usati per la migrazione da Interbase.
 
  • Dialect 1 - rende possibile la comunicazione con firebird come se si trattasse di Interbase 5
    non supportando tutte le features di firebird
  • Dialect 2 - è di transizione
  • Dialect 3 - Supporta internamente tutte le features di firebird.
 
Cito Faq di Firebird
"SQL dialect were used for migration between InterBase 5 and Firebird 1. Dialect 1 enables legacy applications to talk to Firebird as if it was InterBase 5. Dialect 2 is used for transition and dialect 3 is supports all the new features.
If you're writing a new application, you should use Dialect 3 for all your databases. "
 
Ovviamente se si scrive una applicazione nella creazione del database bisogna sempre utilizzare il Dialect 3.Nel nostro caso un database era rimasto in Dialect 1 e non consentiva molte operazione come ad esempio un alter table per un cmapo numeric differente da quelli presenti nella tabella.
 
Convertiamo Dialect 1 in Dialect 3
 
Utilizzando gfix presente nella bin di firebir che ci consente di convertire  il dialect del database.QUESTA operazione resta comunque non consigliata è meglio creare un database nuovo in dialect 3  e riversarci i dati dentro.
 
gfix -user SYSDBA -password masterkey -sql_dialect 3 nomedatabase
 
Per verificare la corretta conversione è possibile connettersi al db tramite ISQL Tool
 
SQL> connect nomedatabase
CON> user SYSDBA password masterkey;
Database:  mop, User: SYSDBA
SQL> show sql dialect;
        Client SQL dialect is set to: 3 and database SQL dialect is: 3
SQL>
 
Di seguito le features dal sito di firebird dei dialect.
 
Dialect 1
Supports only a Date field (but it also includes the time) 
Does not use double quotes around field and table names in queries 
All names must be upper case only 
Generators are 32-bit integers (same as MS Access) 
The way Firebird 1.0 works
 
Dialect 3
Supports Date, Time, and Timestamp fields 
Places table and field names in double quotes, appears to support spaces in field and table names 
Allows mixed case names 
Generators are 64-bit integers 
Not supported by the tools supplied with Interbase 5 & 6 
The default Firebird 1.5 uses to create new databases (*.fdb files)
 
 
Per domande è presente il forum.

Commenti Commenti (1) | User Autore: Guido Camerlingo (Guiz)
Tags: firebird dialect 1 error dialect 3 Metadata update statement is not allowed by the current database SQL dialect





Articoli Correlati
Firebird - Conversione Dialect
Interbase e Firebird connessione tramite ODBC Driver
ImageMagick - PDF To Image da linea di comando
Auto Increment con FireBird
[PHP] - Convertire stdClass Objects in Array

Commenti
Da: pegasodrago Ora:00.14:41 Data: 19/02/2011

Grande Mop, grandissimo Guido!!!


Scrivi Commento
Codice Verifica

Commento massimo 5000 caratteri.(Tutti i campi contrassegnati da * sono obbligatori).

   

Ricerca

Glossario Naviga nel nostro glossario!
Scopri il gergo dei Geek!


 ULTIMI ARTICOLI

226 giorni fa
447 giorni fa

 [EN] Last Articles

 Siti Amici

Visita il Blog Roll
Contattaci! Diventa nostro amico!



 Hot Downloads


 Categorie

85
163
58
87
13
2
20
36
1
2
5
5
128
7
24
15
62
45

 Code

11
11
3
6
2
24
1
7

 Games

19
45
13

 GUIDE


 Novità Downloads

70
68
3833

 Tags Cloud

asteroidi vita rilascio internazionale uscita Samsug episode seattle smart-tablet stazione spaziale giorno piano mensile 2 demo rilascio dato



 CopyRight

Valid XHTML 1.0 Transitional CSS Valido! [Valid RSS] Creative Commons License


Geek-Blog by Flavio Mandato, Giuseppe Vaccaro, Guido Camerlingo, Stefano Natale, Domenico Cavallo is licensed under a Creative Commons Attribuzione-Non opere derivate 2.5 Italia License.
Based on a work at www.geek-blog.it.
Permissions beyond the scope of this license may be available at http://www.geek-blog.it/

Disclaimer - Responsabilità - Pagina generata in 0.084 secondi. Geek-Blog.it