ATUALIZAR BASE MYSQL
Bem pessoal, gostaria de saber dos amigos que trabalham com MySQL, por exemplo como fazem para atualizar suas bases de dados nos clientes. Por exemplo distribuo a minha aplicação só que fazendo atualizações precisei acrescentar campos, index,views e ou procedures ou até mesmo tabelas. Como fazer para atualizar no cliente. Tipo por exemplo sei lá tenho uma base no servidor e quanto atualizar no cliente ele comprar com a base do servidor, se o campos ou tabelas e etc existirem descarta se não cria.
Eu tenho duas formas.
A primeira que iniciei foi criar um arquivo (script sql) com as alterações do banco e rodar o script no cliente através de tela excluisiva para backup/restore/atualização de banco.
a idéia foi boa e funcionou muito bem para alterações e correções do banco(index, view, procedures, novos campos, etc...etc....) porém em um determinado momento eu necessitei de fazer INSERTs, e tive então que mudar novamente o esquema.
Então criei a segunda forma, que consiste em um banco no meu site onde neste banco tenho uma tabela chamada updates.Eu lanço nessa tabela todas as alterações necessarias e de quebra posso lançar inserts, o que me permite corrigir ou inserir ON LINE qualquer alteração/inserção no banco.
A primeira que iniciei foi criar um arquivo (script sql) com as alterações do banco e rodar o script no cliente através de tela excluisiva para backup/restore/atualização de banco.
a idéia foi boa e funcionou muito bem para alterações e correções do banco(index, view, procedures, novos campos, etc...etc....) porém em um determinado momento eu necessitei de fazer INSERTs, e tive então que mudar novamente o esquema.
Então criei a segunda forma, que consiste em um banco no meu site onde neste banco tenho uma tabela chamada updates.Eu lanço nessa tabela todas as alterações necessarias e de quebra posso lançar inserts, o que me permite corrigir ou inserir ON LINE qualquer alteração/inserção no banco.
Citação::
Eu tenho duas formas.
A primeira que iniciei foi criar um arquivo (script sql) com as alterações do banco e rodar o script no cliente através de tela excluisiva para backup/restore/atualização de banco.
a idéia foi boa e funcionou muito bem para alterações e correções do banco(index, view, procedures, novos campos, etc...etc....) porém em um determinado momento eu necessitei de fazer INSERTs, e tive então que mudar novamente o esquema.
Então criei a segunda forma, que consiste em um banco no meu site onde neste banco tenho uma tabela chamada updates.Eu lanço nessa tabela todas as alterações necessarias e de quebra posso lançar inserts, o que me permite corrigir ou inserir ON LINE qualquer alteração/inserção no banco.
Fox teria um exemplo que pudesse me enviar? No momento não tenho a idéia de como seria para ele varrer a estrutura da tabela do servidor e verificar a do cliente se existir descarta se não atualiza, cria e insere
Olha eu posso estar errado mais penso mais simples, veja:
Quando você fizer atualização de seu aplicativo, você teria de mandar esta nova versão para o cliente, estou certo?
se eu estiver certo, então poderia ser feito o seguinte, para atualizar campos, tabelas, etc. bastaria você usar querys, iguais a do Mysql.
ex: [Ô]sSQL = [Ô]CREATE TABLE novatabela[Ô]
espero que tenha entendido, se entendeu então veja como pode proceder
No form principal do executavel crie uma sub atualizações, no seu banco de dados Crie uma tabela com nome VERSAO e um campo NUMERO
lógico nesta tabela vc manterá o numero da versão, e seria mais simples verificar apenas o numero da versão do que pesquisar tabela por tabela campo por campo.
então nesta sub vc faria consulta do numero da versão e compararia a versão que vc está enviando, ex:
ps: 200 seria uma versão 2.0.0
assim a cada alteração do programa bastaria vc alterar esta sub para fazer o que deseja.
resumindo, quando enviar a nova versão do software para o cliente e fará o resto.
apenas mais uma idéia
Quando você fizer atualização de seu aplicativo, você teria de mandar esta nova versão para o cliente, estou certo?
se eu estiver certo, então poderia ser feito o seguinte, para atualizar campos, tabelas, etc. bastaria você usar querys, iguais a do Mysql.
ex: [Ô]sSQL = [Ô]CREATE TABLE novatabela[Ô]
espero que tenha entendido, se entendeu então veja como pode proceder
No form principal do executavel crie uma sub atualizações, no seu banco de dados Crie uma tabela com nome VERSAO e um campo NUMERO
lógico nesta tabela vc manterá o numero da versão, e seria mais simples verificar apenas o numero da versão do que pesquisar tabela por tabela campo por campo.
então nesta sub vc faria consulta do numero da versão e compararia a versão que vc está enviando, ex:
vSQL = [Ô]SELECT numero FROM versao[Ô]
Set RS = CNN.Execute(vSQL)
If RS!numero < 200 Then
[ô] vc colocaria as atualizações apenas
cnn.Execute([Ô]CREATE TABLE novatabela[Ô])
[ô] etc, etc
[ô] ai vc salvaria a nova versão do banco
CNN.Execute([Ô]UPDATE versao SET numero = [ô]200[ô][Ô])
End If
ps: 200 seria uma versão 2.0.0
assim a cada alteração do programa bastaria vc alterar esta sub para fazer o que deseja.
resumindo, quando enviar a nova versão do software para o cliente e fará o resto.
apenas mais uma idéia
Tópico encerrado , respostas não são mais permitidas