maxcarvalho 0 Denunciar post Postado Fevereiro 2, 2005 Prezados(as), Estou diante da seguinte situação : tenho uma tabela em MySQL, contendo um campo "int(6)" que é auto-increment. Gostaria de saber como faço para zerar o valor desse campo ? Existe algum comando ou função pre-definida que implemente esta funcionalidade ? Se alguém puder me ajudar, antecipadamente agradece Max W. V. Carvalho maxcarvalho@yahoo.com.br Compartilhar este post Link para o post Compartilhar em outros sites
walace 1 Denunciar post Postado Fevereiro 2, 2005 Tente isso: ALTER TABLE teste1 CHANGE cod cod INT( 11 ) DEFAULT NULL AUTO_INCREMENT ou isso: ALTER TABLE tabela AUTO_INCREMENT = 1; Depois responde aí se funcionou e qual das duas usou ! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
maxcarvalho 0 Denunciar post Postado Fevereiro 3, 2005 Prezado walace, Lamento infomar qu e nenhuma das sugestões propostas funcionou aqui. Por acaso não está faltando algo ? Só para relembar, a minha dúvida é : como resetar(zerar) um campoauto-increment no MySQL ? Será que não existe um comando do tipo : DROP nome-do-campo-autoincrement ON nome-tabela ou SET Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Fevereiro 3, 2005 naum entedi pq não funcionou, uso a 2ª opção sempre q necessário e nunca falhou...qual o tipo de tabela você está utilizando? MyISAM ou InnoDB?Se for o Inno, executa o alter table, e reinicia o serviço do mysql.agora o MyISAM deve funcionar, a não ser é claro que este procedimento implique em conflito com registros existentes (se houver né).d qquer forma, diz ae como você fez p/ galera ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
maxcarvalho 0 Denunciar post Postado Fevereiro 4, 2005 Prezado Walace, É um amigo meu de trabalho que está com a dúvida. Eu que não havia entendido direito qual era a dúvida dele. Estamos usando tabelas InnoDB. Eu consegui, depois de algumas tentativas, "dropar" o auto-increment, usandoaquela solução que você propôs usando o CHANGE. Em relação a esta dúvida anterior - desabilitar o auto-incremento(que eu pensei ser a dúvida do meu amigo, mas a dúvida dele é a que segue abaixo), eu consegui elaborar dois scripts, um para desabilitar todos os auto-incrementos das tabelas e um outro para habilitar novamente os auto-incrementos. Os scripts estão usando o CHANGE por você proposto. Na realidade, a dúvida que ele tem é a seguinte : não é dropar, e sim, resetar(zerar, reiniciar a contagem do auto-increment). Tentei usar o comando SET INSERT_ID = 0 para zerar o contador do auto-incremento, mas não obtive sucesso. Só consigo setá-lo para valores maiores ou iguais a 1. Ah, tem outro problema também, me parece que o comando acima só funciona para a sessão corrente(talvez o termo mais adequado seja a "conexão" ativa no momento) ? Estou certo ou errado neste sentido ? Em suma, já consegui desabilitar(remover os auto-incrementos das definições das tabelas) e habilitar(colocá-los novamente nas definições), usando o CHANGE, mas ainda não estou sabendo usar o SET INSERT_ID. Tem como eu usar o comando acima na própria definição da tabela ou até mesmo em um script para que, quando eu vá criar o banco e das tabelas ele já pegue essa a configuração de auto-incremento que estiver previamente setada ? No mais, é só. Desculpe pelo tamanho da mensagem!!! []'s e bom carnaval Max Carvalho maxcarvalho@yahoo.com.br Compartilhar este post Link para o post Compartilhar em outros sites
maxcarvalho 0 Denunciar post Postado Fevereiro 4, 2005 Prezado "cassitos", no lugar de "walace". Desculpe o lapso. Informática deixa a gente assim. Compartilhar este post Link para o post Compartilhar em outros sites
thiago_web 2 Denunciar post Postado Julho 1, 2009 Comigo funcionou assim: 1- Limpa a Tabela desejada. 2- executar o codigo abaixo. ALTER TABLE tabela AUTO_INCREMENT = 1; Esse código funciona perfeitamente. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif 2 Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Julho 7, 2009 thiago_web Sei que a intenção foi boa mas este tópico é de 2005 Se deseja realmente ajudar o fórum responda em tópicos recentes onde os usuários ainda precisam da resposta 1 Compartilhar este post Link para o post Compartilhar em outros sites
Ewaldo Quint 0 Denunciar post Postado Janeiro 12, 2011 Mário, estamos em 2011, e a mensagem do thiago_web me ajudou e muito. Obrigado! Abraços! Ewaldo Quint thiago_web Sei que a intenção foi boa mas este tópico é de 2005 Se deseja realmente ajudar o fórum responda em tópicos recentes onde os usuários ainda precisam da resposta Compartilhar este post Link para o post Compartilhar em outros sites
tiujhou 7 Denunciar post Postado Julho 28, 2011 Mário, estamos em 2011, e a mensagem do thiago_web me ajudou e muito. Obrigado! Abraços! Ewaldo Quint thiago_web Sei que a intenção foi boa mas este tópico é de 2005 Se deseja realmente ajudar o fórum responda em tópicos recentes onde os usuários ainda precisam da resposta Somos 2... em 2011 e essa resposta do Thiago ajudou e muito... aateh ++... Compartilhar este post Link para o post Compartilhar em outros sites
ujaron 0 Denunciar post Postado Outubro 30, 2011 Desculpa reviver o tópico mas creio que muita gente faz o seguinte: usa um select `id` desc limit 1 pra pegar a nova id que sera cadastrada antes de cadastra-la, esse sistema funcionaria se nao fosse que ao deletar um id o auto-increment continua pulando akele que foi deletado (Por exemplo: ultima id eh 15 ai você deleta esse 15 e o sql continua inserindo 16 mas com seu codigo o ultimo id seria 15) entao minha solução pra isto foi: 1 - SETE O AUTOINCREMNT DA SUA TABELA PARA O ULTIMO ID, DEPOIS COLOQUE NO CODIGO DE REMOÇÃO DE REGISTROS $query1 = mysql_query("delete from table WHERE `id`=?", array($_GET['remover'])); // DELETA O REGISTRO $query2 = mysql_query("SELECT * FROM `table` ORDER BY `id` DESC LIMIT 1"); // PEGA O ULTIMO ID DA TABELA $novo = mysql_fetchrow($query2); // FETCH $id = ($novo['id']-1); // NOVO AUTO INCREMENT COMEÇARA DA ID ANTERIOR POIS A ULTIMA FOI REMOVIDA $query3 = $db->execute("ALTER TABLE `table` AUTO_INCREMENT=$id"); // NOVO AUTO INCREMENT SERA SEMPRE O ULTIMO ID EU SEI EU EXPLICO MUITO MAL, MAS SE VOCE CONSEGUIU ENTENDER SUA TABELA SEMPRE FICARA COM O AUTO-INCREMENT CERTO MESMO SE VOCE DELETAR O ULTIMO REGISTRO (COM PHP) E PODERA USAR SEMPRE O CODIGO DO SELECT ORDER BY ID DESC SEM PROBLEMAS... Compartilhar este post Link para o post Compartilhar em outros sites
Alexandre Gomes_47413 0 Denunciar post Postado Fevereiro 19, 2012 Bom, estou em 2012, e para mim, o melhor jeito é : "TRUNCATE TABLE nomeDaTablela;". Espero ajudar alguém ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
Shad Held 0 Denunciar post Postado Julho 9, 2012 Bom, estou em 2012, e para mim, o melhor jeito é : "TRUNCATE TABLE nomeDaTablela;". Espero ajudar alguém ^_^ Funcionou pra mim só para tabelas que não tem chaves estrangeiras. Prefiro remover todos os registros da tabela e executar em cada uma: ALTER TABLE `nomeDaTabela` AUTO_INCREMENT = 1 Compartilhar este post Link para o post Compartilhar em outros sites
Ronaldo Marcos 11 Denunciar post Postado Setembro 10, 2012 Sei que esse tópico é bem velho, mas caso alguém esteja com problema parecido e acabe chegando nele em suas buscar pelo google: Um dos motivos para - ALTER TABLE `nomeDaTabela` AUTO_INCREMENT = 1 - não funcionar talvez seja porque o valor que esteja usando para o novo AUTO_INCREMENT (que usei 1 no exemplo ai) seja menor que algum outro que ja esteja no seu BD, isto é, se você tem no Banco um registro com o 2798, não será possível setar para um valor menor por exemplo 2000. CONTUDO, isso acontece em alguns casos que não descobri porque, não é minha especialidade o mysql, mas usando o mesmo sistema com os mesmos dados, em um caso consegui zerar e os dados seguiram a partir de 1, mas em outro só consegui usando um valor acima do registro maior que eu ta tinha no banco. Talvez seja versão do mysql, do administrador (no caso eu usava o mysqladmin); Não sei como resolver em cada caso, mas vale como observação, assim cada um pode chegar a alguma conclusão, no meu caso por exemplo, onde não zerava tirei o auto_inc do campo, zerei todos e depois voltei como auto_inc e setei o inicial como 1. Compartilhar este post Link para o post Compartilhar em outros sites
Joel F 6 Denunciar post Postado Fevereiro 15, 2013 2013 e ainda util. Compartilhar este post Link para o post Compartilhar em outros sites
Lucas C.S 2 Denunciar post Postado Março 2, 2013 Comigo funcionou assim: 1- Limpa a Tabela desejada. 2- executar o codigo abaixo. ALTER TABLE tabela AUTO_INCREMENT = 1; 2013 E ME SALVOOOOOOOOOO KK Compartilhar este post Link para o post Compartilhar em outros sites
ivanferrer 5 Denunciar post Postado Março 4, 2013 Para vc resetar uma tabela, ela precisa estar vazia..., pois os dados contém uma numeração com a ID auto-incrementada, então não tem como resetar com dados, a melhor forma de fazer isso apagar e recriar a sua tabela, de forma que não tenha a definição por default tipo: AUTO_INCREMENT=6, aconselho que vc modifique: exemplo, se sua tabela estiver assim: CREATE TABLE `usuario` ( `usr_id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT, `grp_id` smallint(2) unsigned NOT NULL, `crg_id` tinyint(2) unsigned DEFAULT NULL, `rvd_id` mediumint(5) unsigned DEFAULT NULL, `rde_id` smallint(3) unsigned DEFAULT NULL, `lja_id` mediumint(5) unsigned DEFAULT NULL, `dst_id` tinyint(2) unsigned DEFAULT NULL, `fll_id` tinyint(2) unsigned DEFAULT NULL, `usr_nome` varchar(100) COLLATE latin1_general_ci NOT NULL, `usr_cpf` char(11) COLLATE latin1_general_ci NOT NULL, `usr_rg` varchar(20) COLLATE latin1_general_ci DEFAULT NULL, `usr_login` varchar(150) COLLATE latin1_general_ci DEFAULT NULL, `usr_senha` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, `usr_lembrete` varchar(100) COLLATE latin1_general_ci DEFAULT NULL, `usr_email` varchar(100) COLLATE latin1_general_ci DEFAULT NULL, `usr_site` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, `usr_cep` char(9) COLLATE latin1_general_ci DEFAULT NULL, `usr_endereco` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, `usr_numero` varchar(10) COLLATE latin1_general_ci DEFAULT NULL, `usr_complemento` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, `usr_bairro` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, `usr_cidade` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, `usr_uf` char(2) COLLATE latin1_general_ci DEFAULT NULL, `usr_telefone` varchar(17) COLLATE latin1_general_ci DEFAULT NULL, `usr_celular` varchar(17) COLLATE latin1_general_ci DEFAULT NULL, `usr_dt_nasc` date DEFAULT NULL, `usr_sexo` enum('M','F') COLLATE latin1_general_ci DEFAULT NULL, `usr_tamanho` enum('P','M','G','GG') COLLATE latin1_general_ci DEFAULT NULL, `usr_est_civil` varchar(13) COLLATE latin1_general_ci DEFAULT NULL, `usr_escolaridade` varchar(19) COLLATE latin1_general_ci DEFAULT NULL, `usr_renda` varchar(24) COLLATE latin1_general_ci DEFAULT NULL, `usr_leu_regulamento` enum('S','N') COLLATE latin1_general_ci DEFAULT 'N', `usr_ativo` enum('S','N') COLLATE latin1_general_ci DEFAULT 'N', `usr_status` tinyint(1) unsigned DEFAULT '0', `usr_hash` char(32) COLLATE latin1_general_ci DEFAULT NULL, `usr_dt_cadastro` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `usr_dt_atualizacao` datetime DEFAULT NULL, `usr_alt_senha` date DEFAULT NULL, PRIMARY KEY (`usr_id`,`grp_id`), KEY `usuario_FKIndex3` (`fll_id`,`dst_id`), KEY `usuario_FKIndex4` (`lja_id`,`rde_id`), KEY `usuario_FKIndex5` (`rvd_id`), KEY `usuario_FKIndex6` (`crg_id`), KEY `usuario_FKIndex7` (`grp_id`) ) ENGINE=MyISAM AUTO_INCREMENT=45623 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; mude seu: ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;do final:para ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; Compartilhar este post Link para o post Compartilhar em outros sites
andre13 1 Denunciar post Postado Maio 27, 2013 Comigo funcionou, só tem um problema, coloquei o AUTO_INCREMENT com Valor 10000000000 e fui inserir dados na tabela agora não consigo conectar ao Banco de dados PhpMyadm, alguém tem alguma dica de como eu resolver isso ? Obs: Estava apenas testando a capacidade do PhpMyadm, sempre faço isso nós programas e afins. 1 Compartilhar este post Link para o post Compartilhar em outros sites
Ismael Junior 0 Denunciar post Postado Julho 17, 2013 Não estou querendo reviver o tópico mas cai aqui na pesquisa... :P utilizei o comando abaixo para zerar minha tabela inclusive o id: TRUNCATE nome_tabela; Compartilhar este post Link para o post Compartilhar em outros sites
im.ivo 0 Denunciar post Postado Novembro 5, 2013 Comigo funcionou assim: 1- Limpa a Tabela desejada. 2- executar o codigo abaixo. ALTER TABLE tabela AUTO_INCREMENT = 1; Esse código funciona perfeitamente. :joia: Obrigado. Eu precisava disso. Que pena que o administrador abaixo respondeu de uma forma que, ao que me parece, ele não entendeu bem o motivo disso aqui. Seu texto salvou e vai salvar muita gente. JHoje é 05/11/2013 Compartilhar este post Link para o post Compartilhar em outros sites