Jump to content
Fivewin Brasil

Problemas, com MYSQL em Servidor Linux DEBIAN 8.7.1 Gnome


marcioe

Recommended Posts

Bom dia a Todos os amigos,

Estou com problemas em um Servidor Linux, na atualização de dados, explicarei melhor abaixo:

A situação atual é a seguinte.

O servidor está com MYSQL e o S.O. Linux DEBIAN 8.7.1 Gnome.
Dai tenho por Exemplo 07 Estaçoes, (Estacao_01,Estacao_02......  Estacao_07). Estão conectando e funcionando.

O Problema é assim Se a estação 02 Modificar um Cadastro de um cliente, (trocar o endereço) por exemplo, gravar os dados. Dai vou na estação 07 por exemplo e consulto o cadastro do cliente, ele ainda está com o endereço antigo.

Porem se eu repetir o processo a estação 02 Modifica um Cadastro de um cliente, (trocar o endereço) , gravar os dados. Dai vou na estação 07 Fecho o Sistema e Reabro ele os dados estão atualizados.

Estive verificando e a atualização no banco de dados do Servidor acontece realtime. mas porque em uma nova consulta ele nao estão no servidor de imediato.

Já fiz o mesmo teste, com um Servidor WINDOWS e o problema nao acontece. será que tenho que configurar algo no MYSQL.

 

Link to comment
Share on other sites

Bom dia ,

Me parece que você não está usando transação e o mysql está configurado para não dar o autocommit. Reveja estes conceitos, geralmente as instalações em Windows já vem com o padrão autocommit, diferente do Linux. Quando você fecha o sistema, ao desconectar o banco já faz um commit de tudo que está pendente. Você não especificou qual RDD que está usando, se especificar quem sabe posso ajudar mais.

Abraço.

Link to comment
Share on other sites

Olá amigo, obrigado por responder.

Vamos lá

Uso SQLLIB

o mysql que instalei no linux, apenas configurei os itens abaixo

*===================================================================

Instalar um servidor da base de dados MySQL, por padrão ele só será
acessado por aplicações que estejam na mesma máquina que o servidor, em
outras palavras, não está habilitado para acesso remoto.
Neste tutorial iremos aprender a liberar o acesso remoto.
Atenção: Execute estes comando no terminal do servidor.
1º abra um terminal
2º nano /etc/mysql/my.cnf
3º altere a linha bind-address = 127.0.0.1 para bind-address = 0.0.0.0
4º reinicie o servidor com o comando /etc/init.d/mysql restart
5º entre no prompt do mysql com o comando: mysql –u root –p
Será solicitado a senha do usuário root para servidor MySQL
6º no prompt do MySQL digite: GRANT ALL ON *.* TO root@’%’ IDENTIFIED By ‘senhadoroot’;
O comando acima irá permitir acesso a todos os bancos de dados de qualquer máquina remota ao usuário root.

*===================================================================

Teria alguma coisa a mais

 

Link to comment
Share on other sites

Boa tarde, faz muito tempo que não uso sqllib, mas deve ter alguma forma de você trabalhar com transação, tipo assim:

// Comando de Iniciar a transação

< seus comandos insert, delete update >

// Comando de encerrar a transação

Desta forma você garante a integridade de todo o bloco de gravação das informações, ou grava tudo ou não grava.

 

Eu trabalho sempre assim. mas uso outro RDD não sei como é na sqllib. De qualquer fora, o que está faltando no seu código é o commit ao final.

 

 

Link to comment
Share on other sites

   SQL CONNECT ON       (TRIM(T_IP_SERVER));      // Nome da estação ou IP do micro onde o MySQL está rodando
         PORT     3306;             // Numero da porta, onde o servidor SQL está escutando
         DATABASE (TRIM(T_BANCO_DAD));
         USER     'usuario_banco';
         PASSWORD 'senha_banco' ;
         OPTIONS  SQL_NO_WARNING;
         LIB      'MySQL'   
 

Como seria esse    SQL EXECUTE "SET SESSION AUTOCOMMIT=1"


Quanto a gravação já está assim 

		   BEGIN TRANSACTION
			cQuery_Mtabela  := 						"INSERT INTO eventos ( "
				cQuery_Mtabela	 := cQuery_Mtabela + " NOME" 
				cQuery_Mtabela	 := cQuery_Mtabela + ",TIPO"  
				cQuery_Mtabela	 := cQuery_Mtabela + ",BASE_IRRF"
				cQuery_Mtabela	 := cQuery_Mtabela + ",BASE_INSS"
				cQuery_Mtabela	 := cQuery_Mtabela + ",BASE_ADIANTAMENTO"
				cQuery_Mtabela	 := cQuery_Mtabela + ",BASE_CONTA_RECEBER"
				cQuery_Mtabela	 := cQuery_Mtabela + ",COTA_CAPITAL"
				cQuery_Mtabela	 := cQuery_Mtabela + ",SITUACAO"
				cQuery_Mtabela	 := cQuery_Mtabela +	" ) VALUES ( "
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(T_NOME_EVENTOS,"T",35,0) 	            				+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_TIPO_EVENTOS='Provento','P','D'),"T",01,0) 	+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_BASE_IRRF_EVENTOS="Sim","S","N"),"T",01,0) 	+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_BASE_INSS_EVENTOS="Sim","S","N"),"T",01,0)		+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_BASE_ADIN_EVENTOS="Sim","S","N"),"T",01,0)		+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_BASE_CCOR_EVENTOS="Sim","S","N"),"T",01,0) 	+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_CONTA_CAPITAL="Sim","S","N"),"T",01,0) 	+ ","
				cQuery_Mtabela	 := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_SITUACAO_EVENTOS="Ativo","A","I"),"T",01,0)	
				cQuery_Mtabela	 := cQuery_Mtabela + " )"
				SQL EXECUTE('COMMIT')
			END TRANSACTION




já essa funcao TRANSFORMA_SQL() é uma funcção apenas de conversao dos dados nada mais.
mas ao final do insert eu executo o commit no banco en todas as transaçoes 


		

olá amigo joao

 


   SQL CONNECT ON       (TRIM(T_IP_SERVER));      // Nome da estação ou IP do micro onde o MySQL está rodando
         PORT     3306;             // Numero da porta, onde o servidor SQL está escutando
         DATABASE (TRIM(T_BANCO_DAD));
         USER     'usuario_banco';
         PASSWORD 'senha_banco' ;
         OPTIONS  SQL_NO_WARNING;
         LIB      'MySQL'   
 

Como seria esse    SQL EXECUTE "SET SESSION AUTOCOMMIT=1"

agradeço ao amigo

Link to comment
Share on other sites

Marcio

Manual da SQLLIB:

Você pode desejar projetar as suas transações para não incluir estas instruções. Se você executar
uma instrução da qual não se pode fazer ROLLBACK em uma transação, e então outra instruções
falhar posteriormente, o efeito total da transação não pode ser desfeito usando uma instrução
ROLLBACK.
Os seguintes comandos finalizam uma transação implicitamente (como se você tivesse feito um
COMMIT depois de executar o comando):
Comando Comando Comando
ALTER TABLE                BEGIN                              CREATE INDEX
DROP DATABASE          DROP INDEX                   DROP TABLE
LOAD MASTER DATA    LOCK TABLES                 RENAME TABLE
SET AUTOCOMMIT=1   START TRANSACTION   TRUNCATE

Att

João Bosco

 

Link to comment
Share on other sites

Bom dia obrigado a Todos

Com o Comando  SQL EXECUTE "SET SESSION AUTOCOMMIT=1" , funciona 100%, porem conforme o  João Bosco explicou, perde-se o  ROLLBACK , então fica meio que não funcional.

Pois teria que ficar colocando AUTOCOMMIT=1, em alguns casos e e outros Não.  Dai nao é muito pratico.

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...