[Firebird]Problema con il default dei campi obbligatori

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

On 1/10/07, Paolo G. [email protected] 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

Eheheh … mi sa che mi sono spiegato male :stuck_out_tongue_winking_eye: … 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. [email protected] 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

On 1/11/07, Paolo G. [email protected] wrote:

Eheheh … mi sa che mi sono spiegato male :stuck_out_tongue_winking_eye: … 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

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.

:slight_smile:

On 1/11/07, Paolo G. [email protected] wrote:

Eheheh … mi sa che mi sono spiegato male :stuck_out_tongue_winking_eye: … 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