erro em INSERT no MySQL com Harbour e RDD

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

erro em INSERT no MySQL com Harbour e RDD

Mensagem por cjp »

Pessoal, estou recebendo de vez em quando o seguinte erro:

Código: Selecionar todos

Erro: 42000 [MySQL][ODBC 3.51 Driver][mysqld-5.6.10-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 ''Acresci o PDF.' at line 1
O comando no qual deu erro desta vez foi:

Código: Selecionar todos

INSERT INTO tarefas values ('N','N656','2010-07-15','2015-01-01',9,'Inacio','N','E','MP',15,0,0,' ','40610-35.2013','2015-07-14','09:39:23','Acresci o PDF.',' ','2000-01-01','2000-01-01')
Mas também ocorre com UPDATE com frequência.

O problema é que não consigo achar nenhum erro no comando acima (nem nos demais em que dá erro).

A estrutura da tabela está assim:

Código: Selecionar todos

         cQuery:="CREATE TABLE tarefas ("+;
		  "USUARIO char(1),"+;
	      "NRTAREFA char(7),"+;
          "HREXIBE datetime,"+;
	      "DTMAXIMA date,"+;
          "PRIORIDADE int,"+;
          "INCLUIDOR char(15),"+;
		  "SOLUC char(1),"+;
		  "EXIBE char(1),"+;
		  "VINCULO char(20),"+;
		  "TEMPOESTIM decimal(7,1),"+;
		  "TEMPOUSADO decimal(7,1),"+;
		  "TEMPOCOMPU decimal(7,1),"+;
		  "CAMPO char(1),"+;
          "ASSUNTO char(30),"+;
		  "DATA date,"+;
          "HORA char(8),"+;
          "TAREFA char(60),"+;
		  "ATIND char(1),"+;
		  "DTCARGA date,"+;
		  "DTPREFER date)"

O pior é que o erro acontece apenas de vez em quando, aleatoriamente.

Não deve ser conexão, pois eu testo a conexão antes desse comando.

Alguém poderia me ajudar a achar esse erro?
Inacio de Carvalho Neto
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

erro em INSERT no MySQL com Harbour e RDD

Mensagem por sygecom »

cade os campo no comando INSERT ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro em INSERT no MySQL com Harbour e RDD

Mensagem por JoséQuintas »

No caso dos nomes de campo no insert é opcional, mas nesse caso fica dependente da ordem exata da estrutura.
Só não lembro agora se vai o "VALUES" quando não se descrevem os campos, mas como disse que é só em alguns, é provável que esteja certo.

Essa linha com conteúdo é a que dá erro?
É uma pergunta idiota, mas é esse mesmo o conteúdo, ou apenas digitou aqui?

Faz diferença a CODEPAGE.
Tem letra que não é válida de uma codepage pra outra.
O nome "inacio" é sugestivo pra um erro desse tipo.
Lembrando que caracteres inválidos nem sempre são visíveis ao mostrar na tela, nem no bloco de notas.

Também data, se estiver vazia, depende do que estiver configurado no servidor, que não é o caso dessa linha.

Por último tamanho de campo, o que à primeira vista no comando está respeitando os tamanhos.

Por coincidência, tive um erro desses ontem, e era a planilha com conteúdo inválido.
Estava importando de Excel pra MySql.
O mais esquisito é que no select veio campo com conteúdo... "sfddsfddfc:\arquivos de programas\..."
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

erro em INSERT no MySQL com Harbour e RDD

Mensagem por JoséQuintas »

Só acrescentando:
Pra descobrir esse erro que tive, acabei acrescentando um hb_MemoWrit( "teste.txt", cComandoSQL ) no fonte.
Com isso, obtive o comando exato que gerou o último erro.

Convém depois criar uma rotina pra analisar esse txt, procurando caracteres inválidos.
Algo do tipo:

Código: Selecionar todos

cTxt := MemoRead( "teste.txt" )
FOR nCont = 1 TO Len( cTxt )
   cLetra := Substr( cTxt, nCont, 1 )
   IF .NOT. cLetra $ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
      ? nCont, cLetra, Asc( cLetra ), Substr( cTxt, nCont - 10, 20 )
   ENDIF
NEXT
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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

erro em INSERT no MySQL com Harbour e RDD

Mensagem por alxsts »

Olá!

Creio que as considerações do Quintas são válidas mas, nenhum dos itens citados geraria um erro de sintaxe, como aponta a mensagem retornada pelo SGBD.

Penso que o problema realmente esteja no conteúdo dos campos. Verifique se tem algum campo contendo apóstrofe (Ex: "Caixa d'Água"). Isto pode quebrar a sentença SQL e gerar este tipo de erro.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro em INSERT no MySQL com Harbour e RDD

Mensagem por JoséQuintas »

Já tive essa mensagem algumas vezes, por conter caractere inválido.
Isso de codepage é problemático.

E não adianta testar no HeidiSQL, porque ele já converte pra UTF8.

Tabela ascii do Harbour PTBR
tabelaascii.png
128 a 159 não existem.
Então... são caracteres inválidos para o MySQL, se considerar a mesma codepage.
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