Modificar Estrutura tab MySql

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

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Modificar Estrutura tab MySql

Mensagem por janio »

Pessoal,

Utilizo com sucesso MySql + Mediator.

Quando preciso fazer alguma modificação em uma tabela existente, utilizo aquela velha maneira tradicional: crio uma tabela temporária com a nova estrutura e dou um append from da nova para a antiga. Ocorre que dessa maneira tenho que refazer TODOS os índices, que uma meio non grata no Mediator, muito lento, principalmente se tivermos indices compostos.

Agora estou precisando alterar o tamanho dum campo de 40 para 50 posições. Se eu utilizar comandos SQL, não sei o que acontece que o Mediator não reconhece.

MedExecSql( "alter table a03prd CHANGE DESCRI DESCRI VARCHAR(50)" )

Esse comando funciona perfeitamente, pelo menos não dá nenhum erro na execução. Mas não é feita a modificação na tabela: Continua aceitando apenas as 40 posições.

Como fazer modificação em tabelas do MySql usando comandos SQL? Tem alguma tabela interna no mysql que tenho que modificar tambem?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Modificar Estrutura tab MySql

Mensagem por alaminojunior »

Jânio, eu faço este tipo de alteração usando o MDBU. Simplesmente funciona.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Re: Modificar Estrutura tab MySql

Mensagem por janio »

Mesmo usando o mDBU tem q ser refeito todos os índices da tabela, justamente o que eu queria evitar.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
dotNET-man
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 05 Jan 2008 19:15
Localização: SC

Re: Modificar Estrutura tab MySql

Mensagem por dotNET-man »

Jânio,
Eu crio a tabela temporária e juntamente os índices e em seguida dou append from. Desta forma é mais rápido que criar tabela temporária -> append from -> criar índice.
Sérgio
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Modificar Estrutura tab MySql

Mensagem por sygecom »

Olá Janio,
Acho que o jeito mesmo é inverter o processo, renomeia a tabela antiga, crie primeiro sua tabela com o nome da tabela atual(vazia com a nova estrutura) logo em seguida crie os indice( teoricamente deve ser rapido por que não tem registro nenhum ainda na tabela ) e depois de o append from na tabela antiga para a nova, acho que é isso.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Modificar Estrutura tab MySql

Mensagem por Stanis Luksys »

Olá,

Você pode alterar o banco usando algum front end como o MySQL-Front, que é excelente! Os índices no mediator são fáceis de compreender, e você pode criar na mão.

Digamos que você tem uma tabela CLIENTES com dois índices: CODIGO e SUBSTR(NOME,20). O que mediator faz (ou pelo menos fazia) é criar um campo na tabela para este índice, algo como "IND_2", onde fica o conteúdo de substr(nome,20),

É por isso que o pŕocesso de criação de índices no mediator é tão lento, por ele sempre dá um "alter table" para adicionar mais um campo na tabela, e essa operação é lenta mesmo quando a tabela é grande.

Fora isso, como os amigos acertadamente já disseram, se a tabela estiver ainda vazia, não demora nada.

Mas fica a dica, baixe o MySQL Front e analise bem suas tabelas. Só assim você vai entender como o Med funciona por dentro. em especial nesta parte de criação de índices, pois o mdbu esconde o jogo...

Eu trabalhei com o Mediator também e acho primordial que você configure o MySQL para gerar logs de todas as requisições feitas ao banco. Assim, você saberá como o Mediator converte seus comandos, o que ele de fato envia ao banco, e então, terá o banco nas suas mãos novamente, podendo alterar "por fora", sem quebrar o Med.

Abraços.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Responder