Resources em MySQL

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Resources em MySQL

Mensagem por Itamar M. Lins Jr. »

Olá!
Aonde o MySQL está em servidor Linux DEU ERRO !!!!
Procure na internet servidor Linux x Windows quem é o escolhido pela maioria dos usuários, que realmente entende do assunto.
Nem se usa mais Mysql no Xampp, trocaram p/ MariaDB.
A cada momento, os usuários escolhem opções abertas pq não confiam nas opções fechadas das empresas. Não podemos arriscar mais, com tanta opção do mesmo nível, até as vezes melhor.
É o mesmo caso de vc não usar o Visual C como compilador para o Harbour. Depender de versões de DLL dentro do mesmo OS é complicado demais.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Só aproveitando, que a informação é importante:

O erro foi o tamanho do bloco enviado ao servidor.
O arquivo em questão era a BÍBLIA em formato JSON.
Ela tem um tamanho um pouco maior do que 4MB.
Na instalação padrão do MySQL, o bloco NÃO pode ser maior que 4MB entre o terminal e o servidor.

Isso é importante pra quem pretende salvar arquivos PDF e outros arquivos em geral.
NÃO É limite do servidor, ou da tabela.

Aqui na minha máquina salvei no meu servidor de internet sem problemas, com mais de 4MB.
Também fiz download, e salvei no meu servidor daqui, sem problemas.
Mas nesse cliente, eu erro de que o bloco excedeu o tamanho máximo, na hora de salvar no servidor local deles.

Não procurei aonde alterar isso, apenas dividi a bíblia em duas metades.

Como estou na fase de testes, por enquanto é testar todo conjunto, antes de perder tempo com detalhes.
O detalhe é importante, mas é só uma parte do conjunto, o resto do conjunto também precisa funcionar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

A mensagem de erro contém a bíblia inteira.
Aqui só uma parte dela.
-2147467259 [MySQL][ODBC 5.3(a) Driver][mysqld-5.6.50]Got a packet bigger than 'max_allowed_packet' bytes
Full SQL:
INSERT INTO JPBINARY ( BINNAME, BINSIZE, BINCRC32, BINTYPE, BINENCODE, BINDATE, BINTIME, BINVALUE ) VALUES ( 'biblia', 4304979, '94F29731', 'json', 'json', '2021-08-04', '02:08:28', '[\\
["GÊNESIS",\\
[\\
["1","1","No princípio criou Deus os céus e a terra."],\\
["1","2","A terra era sem forma e vazia; e havia trevas sobre a face do abismo, mas o Espírito de Deus pairava sobre a face das águas."],\\
["1","3","Disse Deus: haja luz. E houve luz."],\\
["1","4","Viu Deus que a luz era boa; e fez separação entre a luz e as trevas."],\\
["1","5","E Deus chamou à luz dia, e às trevas noite. E foi a tarde e a manhã, o dia primeiro."],\\
["1","6","E disse Deus: haja um firmamento no meio das águas, e haja separação entre águas e águas."],\\
["1","7","Fez, pois, Deus o firmamento, e separou as águas que estavam debaixo do firmamento das que estavam por cima do firmamento. E assim foi."],\\
["1","8","Chamou Deus ao firmamento céu. E foi a tarde e a manhã, o dia segundo."],\\
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

In MySQL, you might run into the error 1153, where it said: “Got a packet bigger than ‘max_allowed_packet’ bytes”.

To fix this, you have to modify the max_allowed_packet size and make it bigger.

From the query editor:

SET GLOBAL max_allowed_packet=100000;
From the command line:

mysql --max_allowed_packet=100M
Or modify the file my.ini or my.cnf and put this line under [mysqld] section in your file:

max_allowed_packet=100M
The size is up to you, the bigger it is, the bigger packet size is allowed. The largest possible packet that can be transmitted to or from a MySQL 8.0 server or client is 1GB. You can see more from the documentation.
https://tableplus.com/blog/2018/08/mysq ... -size.html

Isso é muito interessante.
Independente do limite da tabela, com certeza não adianta aumentar o tamanho na tabela, se o pacote de transmissão não puder transmitir o que precisa.
À primeira vista, 4MB pra um comando é muito.
Mas, se for transmitir uma bíblia em json de 4.1MB.... o comando vai ser maior do que 4MB.
Nos meus testes, usando MariaDB não tive problema nenhum, nem no MySQL que tenho na internet, onde eles já devem colocar um limite gigante.
Isso é sobre o comando de gravação.
E isso depende de CADA SERVIDOR MYSQL/MARIADB, é uma configuração NO SERVIDOR.

Quem pretende salvar documentos em geral, é bom ficar atento ao limite, e a mensagem de erro referente ao limite.

NÃO importa se é ADO, hbMySQL, SQLMIX, etc. Isso é configuração no servidor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

maxpack.png
maxpack.png (8.84 KiB) Exibido 2232 vezes
maxmaria.png
O default do MySQL é 4MB, e do MariaDB é 16MB.
Provavelmente em versões mais novas o limite do MySQL deve ser maior.

Olhei no meu site/hospedagem, e lá o limite do MySQL está 16MB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Tive uma idéia pra contornar essa limitação DE COMANDO.
No SELECT ok, mas no INSERT ou UPDATE pode ter essa limitação.
Se não houver outra opção, a saída seria..... gravar aos pedaços

Código: Selecionar todos

:cSQL := "INSERT INTO tabela ( codigo, binvalue ) VALUES ( 1, " + StringSQL( Substr( cCampo, 1, 2000 ) ) + ")"
:Execute()
:cSQL := "UPDATE tabela SET valor = CONCAT( valor, " + StringSQL( Substr( cCampo, 2001, 2000 ) ) + " ) WHERE CODIGO = 1"
:Execute()
Não é muito elegante, mas não deixa de ser uma opção.

O melhor é aumentar o tamanho limite, mas na falta de opção, pode ir essa.
O importante é limitar o tamanho do comando, e não o tamanho do campo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Talvez pensem em perguntar: Se o default é 4MB, porque precisaria aumentar?

Considerando que o campo text pode ter mais de 2GB.... como vai enviar um comando de 2GB com um limite de 4MB?

Só não sei porque o default é pequeno, algum motivo deve ter pra isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Só recapitulando, pra quem não entendeu:

Tenho minha base na internet, com essa tabela WEBBINARY.
O aplicativo, ao procurar atualizações, baixa tudo que for mais novo desse WEBBINARY para o MySQL local.
Só isso: apenas copia o que está na internet pra base "local", sem fazer uso de nada, trata-se apenas de atualizar o JPBINARY local.

A partir daí, o aplicativo pode verificar LOCALMENTE se JPBINARY tem alguma coisa pra fazer atualização.

Pelo menos teoricamente, qualquer atualização vai ser "local", sem necessidade de pesquisar na internet, porque isto vai ter sido feito anteriormente.
De quebra, qualquer arquivo que eu usava em disco anteriormente, vai poder também ficar nesse JPBINARY.
Vou poder usar pra salvar certificados, pra facilitar a instalação em todos os terminais, capicom e outras dlls, etc.

De repente, substituir totalmente o que era pasta compartilhada pela consulta ao MySQL.
O próprio EXE da estação, consultando se tem EXE mais novo no MySQL.

Acho que vai facilitar uma boa parte de atualizações/checagens.
Pode até reduzir o EXE local a um pequeno EXE que baixa o oficial do MySQL.

Pode parecer exagero, mas... se pensar direito.... se carregar o EXE de uma pasta compartilhada ou do MySQL, parece que seria a mesma carga de trabalho geral.

Bom... comecei o uso disso, não com tudo que mencionei aqui.
Agora é só acompanhar o comportamento, ver os prós e contras na prática, sobre o que cada tipo de coisa pode causar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Achei uma comparação interessante pra isso que estou fazendo:

É como se fosse um pendrive do aplicativo.
Apenas atualizo o pendrive que fica do lado do cliente, com as informações da internet, pra usar quando precisar.

Ao escrever este texto lembrei do ISO do Windows, que fica instalado na máquina e vai sendo atualizado.
Não é que parece o mesmo estilo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Resources em MySQL

Mensagem por JoséQuintas »

Problema de hoje com isso:

Tenho a instalação de capicom.dll e msxml5.dll.
Isso roda silenciosamente (ou nem tanto) em modo administrador, com uma recarga do aplicativo.
O problema foi: isso roda pulando a configuração da empresa, o que também pula a configuração de conexão do MySQL.

A saída foi: antes de usar o modo administrador, eu salvo os arquivos na pasta temporária, desta forma, o modo administrador vai usar os arquivos já salvos, sem precisar do MySQL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder