comment reinitialiser un increment [RESOLU][mysql][auto_increment] - SQL/NoSQL - Programmation
Marsh Posté le 28-01-2014 à 19:37:04
Dans la famille "je suis un ane, j'aurai du y penser"
mysql> set @count=0 ; |
la solution était pourtant simple
set @count=0 ;
UPDATE statcourses SET statcourses.ref = @count:= @count + 1;
Marsh Posté le 28-01-2014 à 18:36:47
bonjour,
j'utilises une base mysql qui commence à beaucoup travailler,
j'ai par contre des reférence en clefsprimaires qui ont été supprimé au fil du temps.
résultat j'ai des reférences ou id non-concécutifs, ça gềne pas trop, mais c'est crado...
je me disais qu'il suffisait de réindexer mais ça ne fonctionne pas, (du moins avec ce que je pensais être la bonne méthode au regard de la doc officielle sur le site mysql)
le cas typique :
francois@belzebot ~ % scp francois@baal:"/home/francois/Documents/*full.20140128.gz" .
francois@baal's password:
mysql.dump.full.20140128.gz 100% 281KB 281.1KB/s 00:00
francois@belzebot ~ % gzip -d mysql.dump.full.20140128.gz
francois@belzebot ~ % mysql -u root -p < mysql.dump.full.20140128
Enter password:
francois@belzebot ~ % mysql -u root -p perso
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.5.35-0+wheezy1 (Debian)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select max(ref) from statcourses ;
+----------+
| max(ref) |
+----------+
| 976 |
+----------+
1 row in set (0.00 sec)
mysql> select count(ref) from statcourses ;
+------------+
| count(ref) |
+------------+
| 962 |
+------------+
1 row in set (0.00 sec)
mysql>
L écart est flagrant...et c'est ça mon souci bien sur
ce que j'ai tenté :
mysql> alter table statcourses auto_increment=1 ;
Query OK, 962 rows affected (0.74 sec)
Records: 962 Duplicates: 0 Warnings: 0
mysql> select max(ref) from statcourses ;
+----------+
| max(ref) |
+----------+
| 976 |
+----------+
1 row in set (0.00 sec)
mysql>
on voit bien là que ça ne marche pas, mon max(ref) est tjrs faux et pas ramené à l'équivalant de count(ref)...
J'ai beau googler je ne trouve que cette methode là pourtant...
vous avez une idée ?
une methode qui marche ? (si possible sans interruption de service) me ferai mal de supprimer la table/recréer la table surtout que l'idée et après coup de faire un trigger sur suppression de ligne pour recréer ces id/ref.... pour éviter que ce cas ne soit tout simplement possible ...
Merci
Message édité par goblin_rieur le 28-01-2014 à 19:37:52
---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)