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
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:
backup restaurado, hora de rodar o aplicativo.
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
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
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 ?
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.