Header
Firebird - Conversione Dialect
in: Guide  So/Code: Generico Data: 17/02/2011
Ora: 13.19:14
Articolo visualizzato: 4451 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

447 giorni fa
668 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

71
69
3862

 Tags Cloud

hackerjournal iss Videozer cry Videoweed air 3ds marzo 11 the mortal agganciato hitman for mortal prezzi the Stagero



 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.068 secondi. Geek-Blog.it