COMPACTAR E REPARAR BD MYSQL

SACOFRITO 16/09/2011 15:58:17
#384484
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
RODRIGOFERRO 16/09/2011 16:09:25
#384485
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
SACOFRITO 17/09/2011 14:47:00
#384543
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
GUTOTEC 17/09/2011 14:51:58
#384545
Sacofritos

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;

FOXMAN 18/09/2011 08:37:15
#384576
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.


SACOFRITO 18/09/2011 12:16:53
#384589
FOXMAN, este comando que voce passou eu faria pelo sql front ou pelo vb?
se fosse pelo vb, con.execute [Ô]truncate orcamento[Ô] ?
FOXMAN 18/09/2011 12:39:03
#384590
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;[Ô]).

SACOFRITO 22/09/2011 13:20:23
#384955
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