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?
Modificar Estrutura tab MySql
Moderador: Moderadores
Modificar Estrutura tab MySql
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Re: Modificar Estrutura tab MySql
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
MySQL c/ SQLRDD
HwGui + GTWVG
Re: Modificar Estrutura tab MySql
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
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

- Mensagens: 20
- Registrado em: 05 Jan 2008 19:15
- Localização: SC
Re: Modificar Estrutura tab MySql
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
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
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Modificar Estrutura tab MySql
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.
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
xHarbour.org + Hwgui + PostgreSql
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Re: Modificar Estrutura tab MySql
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.
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.
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.