# \[Firebird\]Problema con il default dei campi obbligatori

**URL:** <https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606>\
**Category:** IT\
**Created:** [January 10, 2007, 3:34pm UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606 "2007-01-10T15:34:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![guzziii](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f475e1/32.png) [@guzziii](https://www.ruby-forum.com/u/guzziii)\
**Post date:** [January 10, 2007, 3:34pm UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606/1 "2007-01-10T15:34:43Z")

</div>

ciao  
sto sviluppando un’applicazione in Rails; utlizzo come DB–\> FIREBIRD.

Non riesco ad inserire i dati nel DB in quanto ho dei problemi con i  
campi VARCHAR obbligatori che devono avere un valore di DEFAULT. Posso  
agire sul modello in modo da specificare il valore di default  
direttamente da lÃ¬?

* * *

ERRORE

FireRuby::FireRubyException: Error preparing a SQL statement.  
Dynamic SQL Error  
SQL error code = -206  
Column unknown  
M  
can’t format message 13:794 – message file c:\ruby\firebird.msg not  
found  
SQL Code = -206  
Firebird Code = 335544569  
: SELECT CAST(“M” AS VARCHAR(1)) FROM RDB$DATABASE

* * *

SQL

CREATE TABLE PAZIENTI (  
PRG INTEGER DEFAULT 0 NOT NULL,  
SESSO VARCHAR(1) DEFAULT “M” NOT NULL,  
NOME VARCHAR(50) NOT NULL,  
COGNOME VARCHAR(50) NOT NULL  
)

* * *

CONTROLLER

def salva\_nuovo\_paz  
an\_paziente = Paziente.new(  
:nome =\> “#{session[:dipendente][1]}”,  
:cognome =\> “#{session[:dipendente][0]}”,  
:sesso =\> “#{session[:dipendente][8]}”)  
an\_paziente.save  
redirect\_to :action =\> “prova”  
end  
----------------------------------------------------------------------------------------  
MODEL

class Paziente \< ActiveRecord::Base  
set\_table\_name “pazienti”  
set\_primary\_key “prg”  
set\_sequence\_name nil  
end

---

<div class="post-metadata">

**Author:** ![guzziii](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f475e1/32.png) [@guzziii](https://www.ruby-forum.com/u/guzziii)\
**Post date:** [January 11, 2007, 9:29am UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606/2 "2007-01-11T09:29:00Z")

</div>

On 1/10/07, Paolo G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ciao  
> sto sviluppando un’applicazione in Rails; utlizzo come DB–\> FIREBIRD.
> 
> Non riesco ad inserire i dati nel DB in quanto ho dei problemi con i  
> campi VARCHAR obbligatori che devono avere un valore di DEFAULT. Posso

> Column unknown  
> M

> : SELECT CAST(“M” AS VARCHAR(1)) FROM RDB$DATABASE

> CREATE TABLE PAZIENTI (  
> PRG INTEGER DEFAULT 0 NOT NULL,  
> SESSO VARCHAR(1) DEFAULT “M” NOT NULL,  
> NOME VARCHAR(50) NOT NULL,  
> COGNOME VARCHAR(50) NOT NULL  
> )

Forse non ho capito il tuo problema, ma prova con “select SESSO from  
pazienti” …

: - )

M

---

<div class="post-metadata">

**Author:** ![guzziii](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f475e1/32.png) [@guzziii](https://www.ruby-forum.com/u/guzziii)\
**Post date:** [January 11, 2007, 8:36pm UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606/3 "2007-01-11T20:36:02Z")

</div>

Eheheh … mi sa che mi sono spiegato male 😜 … magari fosse cosÃ¬  
facile come dici tu!  
Ho risolto in parte, nel senso che dichiarando i valori di default con i  
singoli apici ( ‘M’ ) anzichÃ¨ quelli doppi ( “M” ) RUBY mi permette di  
scrivere nel DB. Questo Ã¨ lo script corretto:

CREATE TABLE PAZIENTI (  
PRG INTEGER DEFAULT 0 NOT NULL,  
SESSO VARCHAR(1) DEFAULT ‘M’ NOT NULL,  
NOME VARCHAR(50) NOT NULL,  
COGNOME VARCHAR(50) NOT NULL  
)

RUBY utilizza di default il DIALECT 3 … mentre quello che usa il mio  
DB Ã¨ il DIALECT 1.  
Dato che il DB Ã¨ presistente da anni non posso crearmi le tabelle come  
voglio io … anche perchÃ¨ le tabelle sono legate a dei TRIGGER … per  
cui dovrei prima cancellare i trigger, poi modificare i valori di  
default con un altra query (che non ho riportato quÃ¬) e una volta fatto  
questo ripristinare i trigger … non so se ho reso la complessitÃ del  
problema :() !

Se qualcuno sa come fare per impostare il DIALECT di RUBY all’ 1 dai  
file di configurazione … me lo faccia SAPERE! Ve ne sarei molto  
grato!!! Possibile che non vi si Ã¨ mai presentato questo problema?!?

P.S)Dove trovo degli esempi ben fatti? Sulle API spiega le varie  
chiamate ma di esempi ne vedo ben pochi

```
Guzziii :))

```

> On 1/10/07, Paolo G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > ciao  
> > sto sviluppando un’applicazione in Rails; utlizzo come DB–\> FIREBIRD.
> > 
> > Non riesco ad inserire i dati nel DB in quanto ho dei problemi con i  
> > campi VARCHAR obbligatori che devono avere un valore di DEFAULT. Posso
> 
> > Column unknown  
> > M
> 
> > : SELECT CAST(“M” AS VARCHAR(1)) FROM RDB$DATABASE
> 
> > CREATE TABLE PAZIENTI (  
> > PRG INTEGER DEFAULT 0 NOT NULL,  
> > SESSO VARCHAR(1) DEFAULT “M” NOT NULL,  
> > NOME VARCHAR(50) NOT NULL,  
> > COGNOME VARCHAR(50) NOT NULL  
> > )
> 
> Forse non ho capito il tuo problema, ma prova con “select SESSO from  
> pazienti” …
> 
> : - )
> 
> M

---

<div class="post-metadata">

**Author:** ![guzziii](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f475e1/32.png) [@guzziii](https://www.ruby-forum.com/u/guzziii)\
**Post date:** [January 19, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606/4 "2007-01-19T16:31:46Z")

</div>

On 1/11/07, Paolo G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Eheheh … mi sa che mi sono spiegato male 😜 … magari fosse così  
> facile come dici tu!

> RUBY utilizza di default il DIALECT 3 … mentre quello che usa il mio  
> DB è il DIALECT 1.

Non so nulla di Firebird e dialects; ma sembra di capire che il tuo  
problema è a livello di db adapter. Se non riesci a risolverlo  
mandando direttamente tu delle query sql al database in fase di  
inizializzazione di rails, forse ti conviene modificare l’adapter per  
Firebird.

M

---

<div class="post-metadata">

**Author:** ![guzziii](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f475e1/32.png) [@guzziii](https://www.ruby-forum.com/u/guzziii)\
**Post date:** [January 22, 2007, 11:00am UTC](https://www.ruby-forum.com/t/firebird-problema-con-il-default-dei-campi-obbligatori/81606/5 "2007-01-22T11:00:05Z")

</div>

Per il momento ho risolto modificando i default delle tabelle  
scrivendoli con i singoli apici ( ’ ) … Ã¨ stato un lavoraccio perchÃ¨ ho  
dovuto droppare trigger, view, FK ecc… cambiare i DEFAULT dei campi  
NOT NULL e poi ho ricreato trigger, view, FK.

🙂

> On 1/11/07, Paolo G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Eheheh … mi sa che mi sono spiegato male 😜 … magari fosse cosï¿½  
> > facile come dici tu!
> 
> > RUBY utilizza di default il DIALECT 3 … mentre quello che usa il mio  
> > DB ï¿½ il DIALECT 1.
> 
> Non so nulla di Firebird e dialects; ma sembra di capire che il tuo  
> problema ï¿½ a livello di db adapter. Se non riesci a risolverlo  
> mandando direttamente tu delle query sql al database in fase di  
> inizializzazione di rails, forse ti conviene modificare l’adapter per  
> Firebird.
> 
> M
