Página 1 de 1

MySQL: conexão com ADO que não funciona

Enviado: 14 Abr 2022 22:59
por cjp
Pessoal, desde que troquei de computador, semana passada, estou tendo dificuldade para a conexão com meu banco MySQL, tanto em localhost (neste caso não está conectando nunca) como em provedor na internet (que às vezes conecta, às vezes não).
Fiz um programinha de teste:

Código: Selecionar todos

PROCEDURE Main

   LOCAL oCN := ConexaoSQL(1)

setmode(41,70)
cls
   
   IF ! AbreConexao( oCN )
?"Não conectou"
inkey(11)   
      QUIT
   ENDIF
?"Conectou"
inkey(11)   
   oCN:Close()
   
RETURN

FUNCTION AbreConexao( oCN )

   BEGIN SEQUENCE WITH __BreakBlock()
      oCN:Open()
   ENDSEQUENCE
   
RETURN oCN:State != 0
   
FUNCTION ConexaoSQL( nProvedor )
   
   LOCAL cnConnection, cServer, cDatabase, cUser, cPassword, nPort := 3306

   hb_Default( @nProvedor, 1 )

   DO CASE
   CASE nProvedor == 1
      cServer   :="127.0.0.1"
      cDatabase :="inacio"
      cUser     :="inacio"
      cPassword :="*******"
   CASE nProvedor == 2
   ENDCASE

   cnConnection := win_OleCreateObject( "ADODB.Connection" )
   cnConnection:ConnectionString := ;
      MariaDB_StringConexao() + ";" + ;
      "Server=" + cServer + ";" + ;
      "Port=" + Ltrim( Str( nPort ) ) + ";" + ;
      "Database=" + cDatabase + ";" + ;
      "User=" + cUser + ";" + ;
      "Password=" + cPassword + ";" + ;
      "Collation=latin1;" + ;
      "AUTO_RECONNECT=1;"
   cnConnection:CursorLocation    := 3 // AD_USE_CLIENT
   cnConnection:CommandTimeOut    := 300 // seconds
   cnConnection:ConnectionTimeOut := 300 // seconds
   
RETURN cnConnection

FUNCTION Mariadb_StringConexao()
         LOCAL cTxt := ""
            cTxt += "Driver={MariaDB ODBC 3.1.6}"
RETURN cTxt
Só dá "não conectou".

Pelo Heidisql a conexão funciona sem problema, tanto no localhost quanto no provedor.

Estou achando que o problema pode ser o conector, mas não sei como resolver o problema.

Alguém pode me ajudar?

MySQL: conexão com ADO que não funciona

Enviado: 15 Abr 2022 17:55
por JoséQuintas

Código: Selecionar todos

BEGIN SEQUENCE WITH __BreakBlock()
   oCN:Open()
ENDSEQUENCE
Retira o BEGIN SEQUENCE/ENDSEQUENCE pra ver qual é a mensagem de erro.

MySQL: conexão com ADO que não funciona

Enviado: 15 Abr 2022 19:07
por cjp
Segue a mensagem de erro.
Acho que é mesmo o problema no conector, né?
Como resolver?

MySQL: conexão com ADO que não funciona

Enviado: 15 Abr 2022 21:03
por alxsts
Olá!

Por acaso instalou o driver odbc neste novo computador?

MySQL: conexão com ADO que não funciona

Enviado: 15 Abr 2022 22:11
por cjp
Sim, foi instalado sim.
Tanto que a conexão com o provedor funciona na maior parte das vezes. Só às vezes não funciona.
Com o localhost é que não está funcionando nunca.
Pelo Heidisql funciona sempre. Mas o Heidisql não usa o ODBC né?

MySQL: conexão com ADO que não funciona

Enviado: 15 Abr 2022 22:32
por cjp
Acho que isto prova que foi instalado. Posso ter feito algo errado na instalação (se bem que fiz a instalação típica), mas instalado foi.

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 08:07
por JoséQuintas
cjp escreveu:Acho que isto prova que foi instalado. Posso ter feito algo errado na instalação (se bem que fiz a instalação típica), mas instalado foi.
Isso só mostra que instalou um ODBC, não que instalou o ODBC que o programa precisa.
Suponho que a string funcionava antes, mas me parece que pode estar indicando versão de forma errada, o que confunde tudo sobre funcionar antes, ou sobre não funcionar agora.

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 09:40
por gilbertosilverio
Ola,

Tenta alterar seu drive,

Código: Selecionar todos

cTxt += "Driver={MariaDB ODBC 3.1.6}"
para

Código: Selecionar todos

      cnConnection:ConnectionString += "Driver={MariaDB ODBC 3.1 Driver};"
Instalei o drive 3.1.6 win32 e win64, fiquei em duvida, mais deixei como estava na rotina do Quintas e nunca tive problema, sempre conecta.

Creio que e aqui que você deve ver como esta:

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 11:03
por cjp
Essa função Mariadb_StringConexao() foi o Quintas que fez aqui quando eu estava mudando do MySQL para o MariaDB, para atender alguns computadores que ainda não estavam com MariaDB instalados. Mas ela agora realmente não é mais necessária.
Verifiquei o nome do drive instalado, como vc recomendou, e realmente tinha uma diferença. Está só MariaDB ODBC 3.1 Driver. Mudei no sistema. Funcionou para conexão com o provedor na internet.
Mas, para o localhost, continua dando erro (vide anexo). Creio que este erro não seja do conector. Mas já conferi os dados de conexão, estão corretos, e funcionam pelo HeidiSQL.
Testei também com o conector MySQL, dá o mesmo erro.

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 11:05
por cjp
Isso só mostra que instalou um ODBC, não que instalou o ODBC que o programa precisa.
Suponho que a string funcionava antes, mas me parece que pode estar indicando versão de forma errada, o que confunde tudo sobre funcionar antes, ou sobre não funcionar agora.
Acho que estava apenas com o nome da versão errada. Neste ponto parece que o problema foi solucionado, correto?

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 14:56
por JoséQuintas
cjp escreveu:Essa função Mariadb_StringConexao() foi o Quintas que fez aqui quando eu estava mudando do MySQL para o MariaDB, para atender alguns computadores que ainda não estavam com MariaDB instalados. Mas ela agora realmente não é mais necessária.
O que deixa na dúvida sobre estar diferente de antes.

Agora está reclamando sobre o acesso estar liberado para o usuário.
Ou talvez o nome do banco de dados seja outro, o que novamente deixa na dúvida sobre funcionar antes e agora não.

Talvez no HeidiSQL acesse direto, sem dizer o nome do banco, e por isso funcione.

Como é a parte básica do MySQL.... deveria ser conhecida, porque sempre vai acontecer de instalar do zero.

MySQL: conexão com ADO que não funciona

Enviado: 16 Abr 2022 15:22
por cjp
Como é a parte básica do MySQL.... deveria ser conhecida, porque sempre vai acontecer de instalar do zero.
Já fiz isso várias vezes, sempre deu certo. Não sei por que agora está dando problema.

Mas fui verificar melhor agora, e descobri o problema. No Heidi o usuário inacio estava acessando o localhost, mas não o banco de dados inacio. Já o usuário root acessava tudo sem problema. Daí foi fácil matar a charada: eu tinha esquecido de conceder privilégios para o usuário inacio.

Peço desculpas pela minha falta de atenção e agradeço todas as ajudas valiosas.