Página 4 de 4

MariaDB

Enviado: 07 Fev 2020 00:53
por JoséQuintas
mariadb.png
Restaurando backups do Mariadb.

Interessante:
Tinha reservado 1GB para o MariaDB... mas no final foi até pior.
O default da instalação ficou melhor: 500MB, na máquina de 4GB.

Nota:
o default do MySQL é 50MB, dá erro em certas querys, se não alterar isso manualmente.

MariaDB

Enviado: 24 Fev 2020 21:32
por JoséQuintas
Isso de restaurar tudo de uma vez tá virando rotina...
É que preciso testar conversões...
restoremysql.png

MariaDB

Enviado: 04 Mar 2020 20:16
por JoséQuintas
Estou desinstalando MariaDB do meu servidor.
Nenhum problema com ele, mas com não aceitar no servidor do cliente usando MySQL.
Erro executando comando:-2147217900 [ma-3.1.6][5.7.12-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DOUBLE(10,2) ) AS VALOR FROM ( SELECT NFCADASTRO, COUNT(*) AS QTD, MIN( NFDATEMI' at line 1
Called from ADOCLASS:EXECUTECMD(255)
Isso funciona normalmente no MariaDB, mas não no MySQL.

Não adianta funcionar aqui comigo se não funcionar nos clientes.

Só por isso.
Depois, quando todos os clientes estiverem com MariaDB, aí tudo bem.

MariaDB

Enviado: 04 Mar 2020 20:34
por JoséQuintas
No MariaDB aceitou CAST( x AS DOUBLE(10,2) )
No MariaDB CREATE TABLE IF NOT EXISTS, se a tabela já existe, o MariaDB não valida o restante do comando.

No primeiro caso, alterei pra DECIMAL(10,2)
No segundo caso, fiz a correção do CREATE.

O ruim/perigoso é dar esse problema na troca de versão, durante centenas de atualizações.

É até uma situação engraçada:
Vou retirar o MariaDB porque o problema é no MySQL kkkk

Importante:
- o MySQL é 5.7, talvez no 8.0 isso funcione normalmente.
- o MariaDB é o mais recente

MariaDB

Enviado: 04 Mar 2020 22:18
por asimoes
Quintas,

Ainda bem que eu partir direto pro MariaDb, espero sucesso no meu investimento, porque o meu cliente não vai pagar mais nada por isso, saindo de dbf ele está no lucro e eu aprendendo muito!

MariaDB

Enviado: 04 Mar 2020 22:20
por asimoes
Quintas, como é que você faz pra pegar o IP do servidor na máquina cliente pra conexão com o banco, só pra comparar com o que eu tenho aqui

MariaDB

Enviado: 05 Mar 2020 00:26
por JoséQuintas
asimoes escreveu:Quintas, como é que você faz pra pegar o IP do servidor na máquina cliente pra conexão com o banco, só pra comparar com o que eu tenho aqui
Tenho configuração no aplicativo pra isso, senão teria que ficar pesquisando servidores, e pode ter mais de um, ou ser em qualquer lugar.
asimoes escreveu:Ainda bem que eu partir direto pro MariaDb, espero sucesso no meu investimento,
O MariaDB funciona muito bem, tanto quanto o MySQL.

É que no meu caso são vários servidores em lugares diferentes, teria que entrar em cada servidor pra fazer a troca.
E como estou ainda na fase de migração, sem uso de nada avançado, é muito trabalho pra pouca coisa.

Estou trabalhando muito no aplicativo.
Até o final de março, quero apagar todos os fontes de conversão que existem hoje.
Esse negócio de manter conversões anteriores durante a migração não está dando muito certo.

MariaDB

Enviado: 13 Mar 2020 17:46
por Fernando queiroz
asimoes escreveu:Quintas,

Descobri o problema, não tem tratamento para campo lógico.

Inclui esse código

CASE oStru[ nCont, DBS_TYPE ] == "L"
cSql += " VARCHAR( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT 'F' "

Era esse o problema.
2020-01-27 19_55_05-Window.png
Foi criado também essa função para tratar o lógico

Código: Selecionar todos

FUNCTION LogicSql( lLogic )

   LOCAL cString

   Hb_Default(@lLogic, .F.)
   
   cString := IF( lLogic, "'T'", "'F'" )

   RETURN cString
CASE ValType( xValue ) == "L"
cSql += LogicSql( xValue )


EU ESTOU USANDO
CASE oStru[ nCont, DBS_TYPE ] == "L"
cSql += "TINYINT(1) DEFAULT 0, " ONDE 0 = .F. e 1 ou maior = .T.

MariaDB

Enviado: 13 Mar 2020 18:39
por JoséQuintas
Confirmado. Prova teste:

SELECT * FROM JPAGENDA WHERE 1

SELECT * FROM JPAGENDA WHERE 0

Com 1 retorna tudo, porque 1 é .T.
Com 0 não retorna nada porque 0 é .F.

SELECT * FROM JPAGENDA WHERE 10000

Isso também retorna tudo, porque qualquer coisa diferente de ZERO é .T.

MariaDB

Enviado: 13 Mar 2020 19:35
por Fernando queiroz
pode ser usado também um campo TINYINT desta forma

SELECT * LOGGERAL WHERE LOGGERAL_FRACIONADO IS TRUE;

MariaDB

Enviado: 13 Mar 2020 20:33
por JoséQuintas
Sim
Apesar de servir qualquer campo numérico, o TINYINT seria o menor numérico que existe.
A gente olhando, parece a mesma coisa, mas internamente é salvo com "menos bits".
tinyint.png
Olha lá o limite de 32 bits, 2GB se usar int com sinal de negativo, ou 4GB se usar somente número positivo.
Lembrando que 1 byte = 8 bits, portanto 4 bytes = 4 x 8 = 32bits
Aqui só por curiosidade.