Página 2 de 4

MariaDB

Enviado: 26 Jan 2020 11:27
por asimoes
Quintas,

Qual é o ConnectionString para MariaDb ?

oConexao := Win_OleCreateObject( "ADODB.Connection" )

oConexao:ConnectionString := ""

Consegui:

oConexao:ConnectionString := "DRIVER={MariaDB ODBC 3.1 Driver}; SERVER=LOCALHOST; PORT=3306; DATABASE=asaprev; UID=root; PASSWORD=teste;OPTION=3;"

MariaDB

Enviado: 26 Jan 2020 12:13
por asimoes
Olá Quintas,

Tem como postar as dependências da seu utilitário de transferência:

Código: Selecionar todos

hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
       CNFDBFIND(), WACHOICE(), MENSAGEM(), ADOCLASS(), APPCONEXAO(),
       SAYSCROLL(), GRAFTEMPO(), NUMBERSQL(), DATESQL(), STRINGSQL(),
       ADORECCOUNT()

MariaDB

Enviado: 26 Jan 2020 12:53
por JoséQuintas
É que na verdade não é utilitário, tá dentro do aplicativo.
Vou verificar o que dá pra fazer.

Aqui preparando pra refazer os testes com o conector Mariadb.

Sem paciência de esperar, só resta restaurar vários backups ao mesmo tempo.... rs

Nota: W10 normal, HeidiSQL normal, MariaDB normal...
mariadb.png

MariaDB

Enviado: 26 Jan 2020 13:05
por JoséQuintas
Durante a restauração, até renomear tabela em uso acabei fazendo sem querer kkk
Acabou aparecendo esta mensagem:
mariadb.png
backup restaurado, hora de rodar o aplicativo.
mariadb2.png

MariaDB

Enviado: 26 Jan 2020 13:16
por JoséQuintas
O aplicativo faz backup, e todas as conversões desde a data do backup até agora, enviando pra MySQL o que precisar, etc.
Aonde chegou no login/senha, é porque terminou, está pronto pra uso.
Das 11 empresas, faltam 3.
mariadb.png

MariaDB

Enviado: 26 Jan 2020 13:55
por JoséQuintas
Procurei reduzir as dependências.
Precisa alterar o test.prg e testar.

Código: Selecionar todos

PROCEDURE Main

   LOCAL oFile, cFile

   AppConexao( MySqlConnection( "servidor", "banco", "usuario", "senha" ) )

   FOR EACH oFile IN Directory( "*.dbf" )
      cFile := oFile[ F_NAME ]
      cFile := Substr( cFile, 1, At( ".", cFile ) - 1 )
      CopyDbfToMySql( cFile, .T., .T., .T. )
   NEXT
// FUNCTION CopyDbfToMySql( cTable, lTransfere, lCria, lZera, cNewTable )

   RETURN
test.zip
(15.3 KiB) Baixado 448 vezes

MariaDB

Enviado: 26 Jan 2020 16:18
por JoséQuintas
Erro executando comando:-2147217900 [ma-3.1.6][5.5.66-MariaDB]Unknown column 'JPCADASTRO.CDNOME' in 'field list'
Estou alterando um relatório, e esqueci de indicar o JPCADASTRO nos relacionamentos.... rs
Normal o erro.

Interessante na mensagem de erro:
ODBC: 3.1.6 (MariaDB)
Servidor: 5.5.66 (MariaDB)

MariaDB

Enviado: 26 Jan 2020 16:30
por asimoes
Quintas,

Maravilha, consegui gerar o exe e fiz a carga pro MariaDB, agora vou me diverti com a Maria, kkk, sem zueira, o legal é que mais colegas se interessem pelo assunto.

MariaDB

Enviado: 26 Jan 2020 17:18
por asimoes
Quintas,

Em uma tabela durante a carga deu esse erro:

Erro executando comando:-2147217913 [ma-3.1.6][10.4.11-MariaDB]Incorrect string value: '\xC2\x82lia ...' for column `asaprev`.`admsaude`.`NOME` at row 536
Called from ADOCLASS:EXECUTECMD(226)
Called from COPYDBFTOMYSQL(119)
Called from MAIN(27)

at row 536 é o recno do dbf ?
2020-01-26 17_17_10-Window.png
São registros com acentuação o nome está com acento: xxx Valério de yyyy

Descobri tem usar esse código página

Hb_cdpSelect( "PT850" )

Acho que tem relação com isso Collation=latin1_swedish_ci; na ConnectionString

Se usar hb_cdpSelect( "PTISO" ) ocorre o erro

Vou ter que usar uma função para remover acentos

MariaDB

Enviado: 26 Jan 2020 17:55
por JoséQuintas
asimoes escreveu:Vou ter que usar uma função para remover acentos
Foi o que comentei.
Quando comecei a converter peguei alguns caracteres diferentes, e coloquei na conversão.
Acabei deixando a rotina para o que fui encontrando nas minhas bases DBF.

Acaba até sendo interessante fazer a rotina de cadastrar automático pelo Harbour, porque assim já confirma se precisa ajustar alguma coisa, não só nesse momento de incluir, mas principalmente pro dia a dia.

Foi quando testei tudo junto que padronizei pra PTISO.
Foi a que melhor atendeu tudo de uma vez: editor de texto, tela, MySQL, site, etc.

MariaDB

Enviado: 26 Jan 2020 18:21
por asimoes
Está reclamando de caracteres especiais

R HILARIO DE GOUVEIA, 91/501

Erro executando comando:-2147217913 [ma-3.1.6][10.4.11-MariaDB]Incorrect string value: '\xE2\x96\x91 10...' for column `asaprev`.`apc01`.`ENDERECO` at row 228
Called from ADOCLASS:EXECUTECMD(227)
Called from COPYDBFTOMYSQL(113)
Called from MAIN(29)

Não sei o que pode ser.

MariaDB

Enviado: 26 Jan 2020 18:37
por asimoes
Não consigo sair disso

Já defini a codepage para PTISO,

Erro executando comando:-2147217913 [ma-3.1.6][10.4.11-MariaDB]Incorrect string value: '\xC2\x82 IDO...' for column `asaprev`.`apc01`.`PROV` at row 1308
Called from ADOCLASS:EXECUTECMD(227)
Called from COPYDBFTOMYSQL(113)
Called from MAIN(29)

Se at row 1308 for o registro n dbf, esse campo PROV está vazio !, ainda não entendi o problema.

MariaDB

Enviado: 26 Jan 2020 19:34
por JoséQuintas
asimoes escreveu:Não consigo sair dissoJá defini a codepage para PTISO,
Erro executando comando:-2147217913 [ma-3.1.6][10.4.11-MariaDB]Incorrect string value: '\xC2\x82 IDO...' for column `asaprev`.`apc01`.`PROV` at row 1308
Called from ADOCLASS:EXECUTECMD(227)
Called from COPYDBFTOMYSQL(113)
Called from MAIN(29) Se at row 1308 for o registro n dbf, esse campo PROV está vazio !, ainda não entendi o problema.
Tem um detalhe em caracteres especiais: alguns não são "mostráveis". não aparece nada, mas tem caractere lá.

Usa aquela rotina tradicional pra teste:

Código: Selecionar todos

FOR EACH cLetra IN cCampo
   DO CASE
  CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
   CASE cLetra $ "ABCDEFGH..."
   CASE cLera $ " ,+-()"
   OTHERWISE
       ? cLetra, Asc( cLetra ), Substr( cCampo, cLetra:__EnumIndex - 10, 20 )
   ENDCASE
NEXT
Vai cercando os caracteres válidos, pra ver o que sobra.

MariaDB

Enviado: 26 Jan 2020 20:10
por asimoes
Quintas,

Achei um caracter ¦ no campo endereço, não tem alguma sintaxe que permita a inclusão desses registros com caracteres especiais?

MariaDB

Enviado: 26 Jan 2020 20:39
por JoséQuintas
asimoes escreveu:Achei um caracter ¦ no campo endereço, não tem alguma sintaxe que permita a inclusão desses registros com caracteres especiais?
Se for pensar direito, melhor remover mesmo, porque não faz sentido isso no endereço.
Acrescenta naquela função de limpeza.

O caractere não existe no conjunto do banco, por isso o erro.
Se não fosse isso, existe a opção de usar "\".
Por exemplo, o Chr(13) não grava, mas... se usar "\" + Chr(13) ok.
Ou a própria "\", trocar por "\\"
Se for fazer isso, não esquece a ordem, primeiro trocar "\", depois o resto.
Até mesmo aspas simples, que é controle de string: \'

Exemplo:

Código: Selecionar todos

FUNCTION StringSql( cStr )

   cStr := StrTran( cStr, "\", "\\" )
   cStr := StrTran( cStr, ['], [\'] )
   cStr := StrTran( cStr, Chr(13), "\" + Chr(13) )

   RETURN cStr
Aquela aspas simples pode existir em 'RUA D'ALVA', aí trocaria pra 'RUA D\'ALVA'

Por isso eu uso em meus fontes StringSql( cCampo ), pra fazer uma prévia do que não pode, ou pra esses "\"
De quebra pode evitar injeção de SQL, aquilo do usuário colocar SELECT ou algo parecido dentro de um campo pra executar algum comando.