Newsgroup: it.comp.os.linux.sys
Titolo: galera vs mysql: strano errore

mi devo fidare di una collega, la quale mi dice che con mysql scrauso e 
vecchissimo non ottiene l'errore di seguito, mentre con Galera non riesco 
ad applicare gli stessi update tramite liquibase. 
La cosa mi puzza... ma tant'è.
- ho già provato a impostare check_foreign_keys su OFF, ma non cambia 
niente.
- ho anche provato a ripacchettizzare li jar mettendo all'interno una 
versione più recente del driver jdbc.
 
A me puzza che questa costa deve succedere solo con Galera. L'unica cosa 
che non ho provato è stata quella di mettere giù gli altri nodi del 
cluster, e lasciare attivo un solo nodo... ipotizzando che il problema si 
verifichi durante la replica e non durante l'update (ma questa è una cosa 
che posso provare rapidamente). 
 
Cannot add or update a child row: a foreign key constraint fails 
(`perseus`.`Product`, CONSTRAINT `fk_product_certificate` FOREIGN KEY 
(`customerId`) REFERENCES `Customer` (`id`) ON DELETE NO ACTION ON UPDATE 
NO ACTION)
liquibase.exception.DatabaseException: Error executing SQL INSERT INTO 
Product (
            customerId,
            productKey,
            queryAreaShape,
            transactionTracking,
            activeSessionLimit,
            defaultMediaType,
            resetContentStatusCode,
            sessionRequestTransformResource,
            sessionResponseTransformResource,
            messagesRequestTransformResource)
            VALUES (6,'AUDI_STATIC_TEST','CIRCLE',1,100,'application/octet-
stream',410,
            'classpath:/common/audi-initSession-request.xsl', 
            'classpath:/common/audi-initSession-response.xsl',
            'classpath:/common/audi-getMessages-request.xsl'): Cannot add 
or update a child row: a foreign key constraint fails 
(`perseus`.`Product`, CONSTRAINT `fk_product_certificate` FOREIGN KEY 
(`customerId`) REFERENCES `Customer` (`id`) ON DELETE NO ACTION ON UPDATE 
NO ACTION)
 
 
 
-- 
Massimiliano Adamo

niente.
 
Questo mi pare difficile. O i constraint sono ancora attivi, oppure non ti
devono dare errore. Che ti diano errore senza essere attivi rientra a buon
diritto nella sfera dei miracoli.
 
Sospetto che qualche nodo possa non essere d'accordo con l'attivazione dei
constraint, e in piu' che i dati inseriti non li soddisfino. Controlla se,
tantevòrte, il famoso product certificate non manchi dalla tabella.
 
Quanto al fidarsi della collega, immagino tu gia' sappia :-)
 
Leonardo
 
-- 
 
Questi non hanno speranza di morte; e la lor cieca vita e' tanto bassa,
Che 'nvidiosi son d'ogne altra sorte. Fama di loro il mondo esser non lassa;
Misericordia e Giustizia li sdegna; non ragioniam di lor, ma guarda e passa.

 Quanto al fidarsi della collega, immagino tu gia' sappia :-)
 
e infatti... oggi ho riprovato e mi è fallito anche sul vecchio MySQL. La 
cosa strana è che una volta su 10 mi ha funzionato con Galera. 
Il problema principale è che non so come funziona liquibase. Gli 
sviluppatori ci danno un jar (che avranno compilato con una diavoleria 
tipo Maven).... ho già provato a riassemblarlo per rimpiazzare il driver 
jdbc, adesso dovrei cercare il file XML dove memorizza le query... ma 
faccio prima a fare un cazziatone agli sviluppatori e a farmi dare 
qualcosa che funziona. 
 
p.s.: avranno le loro ragioni per usare liquibase, ma quanto vale un 
semplice file SQL......
 
 
 
-- 
Massimiliano Adamo

 replacement".
 
ok, XtraDB / innodb sono le tabelle non il DB. Comunque ci siamo capiti :)
 
-- 
Massimiliano Adamo

cosa strana è che una volta su 10 mi ha funzionato con Galera. 
 
Sempre con gli stessi dati, o con dati diversi? Nel secondo caso, non e'
rilevante. Nel primo, qualche mente alata potrebbe essersi dimenticata i
necessari LOCK da qualche parte, sicche' l'INSERT a te funziona solo nel
caso in cui The Stars Are Right.


 caso in cui The Stars Are Right.
 
Sempre stessi dati: drop & restore ripetute volte dello stesso DB. 
Capisco che mi stai dicendo che funziona solo se tutti i pianeti sono 
allineati ... devo affrontare liquibase a viso aperto.

allineati ... devo affrontare liquibase a viso aperto.
 
Il fetore di "unhandler concurrency" sta arrivando al Primo Mobile :-). Prima
che arrivi San Pietro a chiedere spiegazioni, io controllerei in *quale* modo
viene gestito il restore.
 
Per esempio, mica le tabelle vengono immesse in parallelo e in unlocked mode?
(A.K.A. "Recipe for a Disaster"?)
 
Leonardo che mica per altro, ma una volta l'ho fatto, e non mi sono divertito
