COMPACTAR E REPARAR BD MYSQL
Ola galera, sou iniciante em mysql e estou usando-o com meu aplicativo vb6.
Mas surgiu uma duvida aqui, como faço para compactar e reparar o banco de dados?
Tipo, estou fazendo uma bateria de testes e entao apos estar tudo ok deleto os registros do banco e começo novamente.
Mas em campos autonumericos, por exemplo a chave primaria de uma tabela de orcamentos nao começara do 1, e sim do ponto em que eu parei nos testes.
No acces eu usava este recurso mas nao sei como fazer no mysql. Alguem pode me ajudar?
Obrigado
Mas surgiu uma duvida aqui, como faço para compactar e reparar o banco de dados?
Tipo, estou fazendo uma bateria de testes e entao apos estar tudo ok deleto os registros do banco e começo novamente.
Mas em campos autonumericos, por exemplo a chave primaria de uma tabela de orcamentos nao começara do 1, e sim do ponto em que eu parei nos testes.
No acces eu usava este recurso mas nao sei como fazer no mysql. Alguem pode me ajudar?
Obrigado
Faça um script para automatizar isso ou importe o SQL sem os dados...
Você precisa apagar rapidamente todos as linhas da tua tabela? Utilize o TRUNCATE!
Legal! Esse comando é estremamente útil, fácil e mágico! Simplesmente limpa tudo. Tabela zeradinha.
Você pode perguntar: “Qual a vantagem se existe o delete que apaga todas as linhas?“
Bom, vamos lá! O comando TRUNCATE é equivalente ao DELETE que deleta todas as linhas, mas existem algumas diferenças práticas em algumas circunstâncias.
Para uma tabela InnoDB antes da versão 5.0.3 do MySql, InnoDB processa TRUNCATE TABLE deletando as linhas uma a uma. A partir do MySQL 5.0.3, a deleção linha por linha é usada somente se existe alguma FOREIGN KEY constraints que referencie a tabela. Se não
existir FOREIGN KEY constraints, InnoDB executa rápido o truncate porque realiza um drop na tabela original e cria uma tabela vazia com as mesmas definições. Isto é extremamente mais rápido do que deletar linha por linha. Show!
Mas vc pode realizar uma segunda pergunta. “E o contador AUTO_INCREMENT?“
é resetado! Exatamente! Começa do zero! Claro, também a partir do MySql 5.0.3. Desta forma, sempre que você usar o TRUNCATE, independentemente se há restrição de chave estrangeira, o contador é resetado!
truncate tb_usuario
Você precisa apagar rapidamente todos as linhas da tua tabela? Utilize o TRUNCATE!
Legal! Esse comando é estremamente útil, fácil e mágico! Simplesmente limpa tudo. Tabela zeradinha.
Você pode perguntar: “Qual a vantagem se existe o delete que apaga todas as linhas?“
Bom, vamos lá! O comando TRUNCATE é equivalente ao DELETE que deleta todas as linhas, mas existem algumas diferenças práticas em algumas circunstâncias.
Para uma tabela InnoDB antes da versão 5.0.3 do MySql, InnoDB processa TRUNCATE TABLE deletando as linhas uma a uma. A partir do MySQL 5.0.3, a deleção linha por linha é usada somente se existe alguma FOREIGN KEY constraints que referencie a tabela. Se não
existir FOREIGN KEY constraints, InnoDB executa rápido o truncate porque realiza um drop na tabela original e cria uma tabela vazia com as mesmas definições. Isto é extremamente mais rápido do que deletar linha por linha. Show!
Mas vc pode realizar uma segunda pergunta. “E o contador AUTO_INCREMENT?“
é resetado! Exatamente! Começa do zero! Claro, também a partir do MySql 5.0.3. Desta forma, sempre que você usar o TRUNCATE, independentemente se há restrição de chave estrangeira, o contador é resetado!
truncate tb_usuario
Ah ok obrigado pelas respostas..pelo que entendi ele limpa a tabela ao zero mesmo. No caso de foreign key nao importa, posso apagar a primary key da tabela orcamentos que a det orcamentos ficara com registros voando la?
e como faço isso via vb6.. ou nao tem como? senao como faço no sql front que é a interface grafica que estou utilizando..
obrigado galera
e como faço isso via vb6.. ou nao tem como? senao como faço no sql front que é a interface grafica que estou utilizando..
obrigado galera
Sacofritos
Voce pode testar a bateria varias vezes ....
Será que isso resolvi ....
voce apagar desapagar e voltar o autonumerador no numero que deseja
Voce pode testar a bateria varias vezes ....
Será que isso resolvi ....
voce apagar desapagar e voltar o autonumerador no numero que deseja
Citação:ALTER TABLE 'db_banco'.'tipos' AUTO_INCREMENT = 1;
Citação::
Ah ok obrigado pelas respostas..pelo que entendi ele limpa a tabela ao zero mesmo. No caso de foreign key nao importa, posso apagar a primary key da tabela orcamentos que a det orcamentos ficara com registros voando la?
e como faço isso via vb6.. ou nao tem como? senao como faço no sql front que é a interface grafica que estou utilizando..
obrigado galera
Você pode utilizar como uma linha de comando normal de funções sql(como um insert, um Delete, um Select), bastando passar para o o seu front ou par sua função que executa sql o comando :
TRUNCATE NOMEDATABELA;
Créditos ao amigo Zerocal.
FOXMAN, este comando que voce passou eu faria pelo sql front ou pelo vb?
se fosse pelo vb, con.execute [Ô]truncate orcamento[Ô] ?
se fosse pelo vb, con.execute [Ô]truncate orcamento[Ô] ?
Citação::
FOXMAN, este comando que voce passou eu faria pelo sql front ou pelo vb?
se fosse pelo vb, con.execute [Ô]truncate orcamento[Ô] ?
Isso, e em ambos os casos
No Front = TRUNCATE ORCAMENTO;
No VB6 Con.Execute([Ô]TRUNCATE ORCAMENTO;[Ô]).
gente, nao deu certo.. tentei fazer pelo front e pelo work bench e ao tentar zerar a tabela orcamentos ocorre um erro dizendo que existem registros com foreing key na tabela detorcamentos. E a tabela detorcamentos estava já vazia, nela eu consegui usar o truncate
Tópico encerrado , respostas não são mais permitidas