exibir erros em MySQL
Moderador: Moderadores
exibir erros em MySQL
Alguém poderia me ensinar a usar a opção para exibição de erros e warnings em MySQL?
Vi neste site (http://www.fromdual.com/mysql-error-codes-and-messages) os códigos de erro, e também vi num outro post neste fórum que se deve usar a opção 1004 da RDDI, mas não acertei usá-la.
Alguém me ajuda?
Vi neste site (http://www.fromdual.com/mysql-error-codes-and-messages) os códigos de erro, e também vi num outro post neste fórum que se deve usar a opção 1004 da RDDI, mas não acertei usá-la.
Alguém me ajuda?
Inacio de Carvalho Neto
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
exibir erros em MySQL
Amigo, com o uso do RDDINFO() você tem opção para retornar o código ou a mensagem do erro (em inglês).
As variáveis usadas:
Abraços,
Código: Selecionar todos
nConnection := RDDINFO( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 3.51 Driver};dsn=;User=root;pwd=suasenha;database=test;" } )
IF nConnection == 0
? "Erro Nº: "+alltrim(str(RDDINFO(RDDI_ERRORNO)))
? "Mensagem: "+RDDINFO(RDDI_ERROR)
Return nil
ENDIFCódigo: Selecionar todos
#define RDDI_CONNECT 1001
#define RDDI_ERROR 1004
#define RDDI_ERRORNO 1005Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
exibir erros em MySQL
Perfeito, meu caro, muito obrigado.
Tentei usar o mesmo para um UPDATE e para um INSERT INTO, mas os dois (nr do erro e mensagem) retornam NIL. Estes códigos não funcionam com o UPDATE com o INSERT INTO? Tem alguma forma de verificar o erro nestes dois comandos?
Tentei usar o mesmo para um UPDATE e para um INSERT INTO, mas os dois (nr do erro e mensagem) retornam NIL. Estes códigos não funcionam com o UPDATE com o INSERT INTO? Tem alguma forma de verificar o erro nestes dois comandos?
Inacio de Carvalho Neto
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
exibir erros em MySQL
Por favor, passe um exemplo de como você está usando estes dois comandos!
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
exibir erros em MySQL
Aí vai:
Insert:
Update:
E a função exquery está assim:
Insert:
Código: Selecionar todos
cQuery:="INSERT INTO tarefas values ('"+dst+"','"+bsnvt+"','"+alltrim(str(year(dt)))+"-"+substr(dtoc(dt),4,2)+"-"+substr(dtoc(dt),1,2)+" "+hr+"','"+alltrim(str(year(dtmax)))+"-"+substr(dtoc(dtmax),4,2)+"-"+substr(dtoc(dtmax),1,2)+"',"+alltrim(str(pr))+",'"+nmus+"','N','E','"+alltrim(vinc)+"',"+alltrim(str(tpmax))+","+alltrim(str(tpmax))+",0.0,' ','"+ass+"','"+alltrim(str(year(date())))+"-"+substr(dtoc(date()),4,2)+"-"+substr(dtoc(date()),1,2)+"','"+time()+"','Tarefa: "+substr(tr,1,52)+"',' ','"+alltrim(str(year(dtcg)))+"-"+substr(dtoc(dtcg),4,2)+"-"+substr(dtoc(dtcg),1,2)+"','2000-01-01')"
exquery(cquery)
Código: Selecionar todos
cQuery:="UPDATE tarefas SET hrexibe='"+alltrim(str(year(dt)))+"-"+substr(dtoc(dt),4,2)+"-"+substr(dtoc(dt),1,2)+" "+hr+"' WHERE nrtarefa='"+arq+"'"
exquery(cquery)Código: Selecionar todos
function exquery(cQuery)
local vzcon :=0
local nConnection :=0
do while .t.
nConnection=conexsql()
if nConnection=0
vzcon++
if vzcon>10
if us="I"
?"Não conectou"
tone(261.7,33)
inkey(.5)
endif
mandmail1("","Não conectou para executar a query: "+cQuery,,2)
else
inkey(2)
endif
RDDSETDEFAULT( "DBFNTX" )
return .f.
else
exit
endif
enddo
do while .t.
RDDSETDEFAULT( "SQLMIX" )
If !RDDINFO(1003, cQuery)
vzcon++
if vzcon>8
RDDSETDEFAULT( "DBFNTX" )
if us="I"
cls
?"Não conseguiu gravar na tabela"
?cquery
?"Erro: "
?rddinfo(1005)
?rddinfo(1004)
tone(261.7,33)
endif
mandmail1("","Não gravou a query (nConnection: "+alltrim(str(nConnection))+"): "+cQuery+"; vzcon: "+alltrim(str(vzcon)),,2)
return .f.
endif
@ maxrow()-1,1 say "Tentando gravar na tabela; aguarde..."
inkey(2)
else
exit
EndIf
enddo
RDDSETDEFAULT( "SQLMIX" )
if !RDDINFO( 1002,,, nConnection)
if us="I"
?"Não desconectou no exquery"
tone(261.7,33)
inkey(20)
else
mandmail1("","Não desconectou")
endif
endif
RDDSETDEFAULT( "DBFNTX" )
return .t.
Inacio de Carvalho Neto
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
exibir erros em MySQL
Amigo, na sua função exquery() você está fazendo uma conexão com o Banco de Dados a cada chamada desta função, acho que o correto seria fazer apenas uma conexão no início do programa principal e depois ao sair do programa encerrar a conexão. Então modifique esta sua função exquery() e retire os comandos entre as linhas 3 e 23, deixe apenas os comandos para executar as query.
Outra coisa é o comando RDDSETDEFAULT( "DBFNTX" ) que está na linha 29, acho que você teria que passar este comando para depois da linha 38.
[Editado] Agora que observei que no final da função exquery() você está encerrando a conexão, então a conexão no início da função você poderia deixar.
Abraços,
Outra coisa é o comando RDDSETDEFAULT( "DBFNTX" ) que está na linha 29, acho que você teria que passar este comando para depois da linha 38.
[Editado] Agora que observei que no final da função exquery() você está encerrando a conexão, então a conexão no início da função você poderia deixar.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
exibir erros em MySQL
Sim, a ideia é justamente fazer uma conexão cada vez que a função for executada, e fechá-la ao final.
E o RDD... na linha 29 é pra sair da função (eu saio dela por falta de conexão na linha 40) com o RDD apropriado.
Mas e a mensagem de erro? É possível exibi-la também no UPDATE e no INSERT?
E o RDD... na linha 29 é pra sair da função (eu saio dela por falta de conexão na linha 40) com o RDD apropriado.
Mas e a mensagem de erro? É possível exibi-la também no UPDATE e no INSERT?
Inacio de Carvalho Neto
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
exibir erros em MySQL
cjp escreveu:Mas e a mensagem de erro? É possível exibi-la também no UPDATE e no INSERT?
Você mudou o comando RDDSETDEFAULT( "DBFNTX" ) de lugar???Toledo escreveu:Outra coisa é o comando RDDSETDEFAULT( "DBFNTX" ) que está na linha 29, acho que você teria que passar este comando para depois da linha 38.
Faça o que eu orientei e depois faça um teste para ver se a mensagem de erro será exibida no UPDATE e INSERT.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
