Jump to content
Fivewin Brasil

Problemas: SQLLIB + INNODB


Erciley Junior

Recommended Posts

Olá, boa tarde a todos.

Estou tendo "problemas com a SQLLIB usando tabelas INNODB".

Por algum motivo, a SQLLIB abre uma transação sem eu mandar fazer isso.

O problema está que: Se eu não abri uma transação por vontade própria, não vou comitar nada, com isso, se uma outra aplicação inserir, excluir ou modificar um dado, minha aplicação corrente não verá e vice-versa.

Minha variável autocommit está ativa, ou seja, autocommit=1.

Algo que eu possa fazer para resolver, seria fazer um COMMIT antes de fazer algum select, mas isso é porquice e teria que modificar alguns milhares de locais.

Alguém já passou por isso? Resolveu? Como? Alguma ideia? Algo a dizer?

Obrigado.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Olá, boa tarde a todos.

Estou tendo "problemas com a SQLLIB usando tabelas INNODB".

Por algum motivo, a SQLLIB abre uma transação sem eu mandar fazer isso.

O problema está que: Se eu não abri uma transação por vontade própria, não vou comitar nada, com isso, se uma outra aplicação inserir, excluir ou modificar um dado, minha aplicação corrente não verá e vice-versa.

Minha variável autocommit está ativa, ou seja, autocommit=1.

Algo que eu possa fazer para resolver, seria fazer um COMMIT antes de fazer algum select, mas isso é porquice e teria que modificar alguns milhares de locais.

Alguém já passou por isso? Resolveu? Como? Alguma ideia? Algo a dizer?

Obrigado.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Erciley peguei esse texto no manual do mysql, mas é por ai a coisa.

Por padrão, MySQL é executado em modo autocommit. Isto significa que assim que você executa

uma instrução que atualiza (modifica) uma tabela, o MySQL armaena a atualização no disco.

Se você estiver usando tabelas com segurança a transação (como InnoDB \ ou BDB), você pode colocar

o MySQL em modo não autocommit com o seguinte comando:

SET AUTOCOMMIT=0

Depois de disabilitar o modo autocommit configurando a variável AUTOCOMMIT com zero, você

deve utilizar COMMIT para armazenar suas alterações em disco ou ROLLBACK se você deseja ignorar

as alterações que você fez desde o início da sua transação.

Se você quiser disabilitar o modo autocommit para uma única série de instruções, você pode utiliar a

instrução START TRANSACTION:

START TRANSACTION;

SELECT @A:=SUM(salary) FROM table1 WHERE type=1;

UPDATE table2 SET summmary=@A WHERE type=1;

COMMIT;

Sds,

Geraldo B. Silva

Fwh1202 Fev/2012, xHarbour 2.0, Bcc582, Pelles, xDev, Sqllib, Tdolphin e MySql.

lucgera@terra.com.br

São Paulo - SP

Link to comment
Share on other sites

Olá GBSilva,

então, já havia lido isso no manual e já trabalho abrindo transações quando necessito, conheço a variável citada e tudo mais, mas mesmo estando isso no manual, ele não segue muito.

Mas obrigado pela ajuda. ^^

Luisão, perfeito, mudando o ENGINE funciona, que milagre. ^^

Igual minha moto, tava vazando óleo, um jeito excelente de resolver foi comprando uma moto nova, huahuahuahua.

Bom, vou dar uma olhada nos prs que a lib traz, pra ver se há algo misterioso que é feito para acontecer isso. ^^

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Olá Erciley!

Sua observação está correta. Mas a SQL LIB faz isto para manter a compatibilidade com o DBF e permite ao programador optar por desabilitar o autocommit ou até enviar isto usando a funcao/comando ele achar mais apropriado.

Att,

Vailton Renato

"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

assinatura.jpg

E-mail/MSN: contato@vailton.com.br

Skype: vailtom

Link to comment
Share on other sites

Bom dia Vailton.

A minha dificuldade, é o oposto de desabilitar o auto_commit, eu estou querendo, é fazer com que ele realmente funcione, ou seja, desabilitar esse "start transaction" que a LIB faz internamente.

Lembrando que a variável autocommit já está ativa, e mesmo assim não consigo este efeito.

É possível fazer isso, desabilitar a funcionalidade da LIB em criar uma transação automaticamente? Como?

Obrigado.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...