Hoi, m.b.v. phpMyAdmin heb ik een database gebouwd. Die heb ik ook getest met onzin data. Maar er staat ook zinnige data in de tabellen. Nu wil ik graag alleen de onzin data kwijt, maar hoe doe ik dat?
Alle tabellen beginnen met een id dat automatisch per rij met 1 wordt opgehoogd.
Als ik nu rijen verwijder dan verdwijnt ook het desbetreffende id permanent en dat is niet de bedoeling.
Als ik een rij handmatig wis, dus een rij selecteer, open en leegmaak. Dan komt alles op '0' te staan. Als ik later weer items toe ga voegen wordt deze rij niet opnieuw gevuld maar overgeslagen.
Vraag: Hoe wis ik bepaalde gevulde rijen zonder dat de automatische telling van de id's mbv de autoincrement teniet wordt gedaan. ???
Het lijkt mij makkelijker dan je de data + structuur even exporteert.
Nu heb je een SQL bestand met alle record erin, je kunt nu makkelijk handmatig de records verwijderen.
Bij het exporteren kun je denk ik wel aangeven of de id (auto_increment) kolom ook moet worden gevuld. Anders moet je nog alle ID,s van alle record handmatig gaan aanpassen.
Als ik nu rijen verwijder dan verdwijnt ook het desbetreffende id permanent en dat is niet de bedoeling.
Lijkt mij logisch, je gooit de data tenslotte weg.
Als ik een rij handmatig wis, dus een rij selecteer, open en leegmaak. Dan komt alles op '0' te staan. Als ik later weer items toe ga voegen wordt deze rij niet opnieuw gevuld maar overgeslagen.
Overgeslagen? Er wordt helemaal niks overgeslagen, er valt niks over te slaan, je maakt gewoon een nieuw record aan. Dat is wat anders dan een UPDATE waarbij je data overschrijft met een lege waarde (NULL of '').
Mijn gevoel: Jij hebt geen idee wat een id is (een middel om een uniek record te herkennen) en kent hier een waarde aan toe die het helemaal niet heeft. Een id betekent helemaal niets! Ga er dan ook geen waarde aan toekennen!
Blijf met je vingers van de auto_increment af en ga nooit lopen klooien met id's. Deze worden uitsluitend door de database gebruikt om unieke records te herkennen. Wanneer jij hiermee gaat lopen klooien, loop je een grote kans op een corrupte database.
Blijf met je vingers van de auto_increment af en ga nooit lopen klooien met id's. Deze worden uitsluitend door de database gebruikt om unieke records te herkennen. Wanneer jij hiermee gaat lopen klooien, loop je een grote kans op een corrupte database.
Ik denk dat renew een tabel heeft zonder ralaties. Anders had renew dit wel aangegeven, lijkt mij.
@Martijn: Waarom lopen kloten met id's wanneer je vele miljarden id's tot je beschikking hebt? Waarom zou je daar risico's mee willen lopen? Ik zou het niet weten...
Wanneer je klaar bent met testen en de boel live wilt gaan zetten, dan is het aan te raden om een complete schone installatie van de database te doen. Dan weet je zeker dat je nergens wat bent vergeten op te ruimen.
Zelfs in een tabel zonder relaties heeft Frank gewoon gelijk. Het id is niets noppes nada en daar ken je geen waarde aan teo. zie het zo:
- je kan zoveel velden maken als je wilt maar blijf van deze af, die is van de DB
renew wil wat records verwijderen en daarna de id kolom weer netjes oplopend hebben.
Als ik weet dat een tabel geen relaties heeft en er zijn niet al te veel records (100+) dan zou ik gewoon de tabel exporteren (zonder ID waardes) en daarna het bestand aanpassen. Even de tabel legen (TRUNCATE) en je kunt alles weer importeren.
Het is niet de mooiste oplossing maar werkt wel.
Wanneer je klaar bent met testen en de boel live wilt gaan zetten, dan is het aan te raden om een complete schone installatie van de database te doen. Dan weet je zeker dat je nergens wat bent vergeten op te ruimen.
Het lijkt mij dat renew geen bestand heeft met de goede records.
Anders had renew dat wel gedaan, lijkt mij.
Hallo, fijn dat jullie meedenken, ik ben wel beginner hoor, maar ik doe mijn best.
Ik wil idd zoals Marijn zegt dat ik graag wil dat het netjes oploopt. Ik weet dat auto-increment zelf telt, daar doe ik niets aan. Het is wel een relationele database. Ik heb me eens laten vertellen dat je eigenlijk nooit moet deleten. Ik heb nu bijvoorbeeld een tabel klant en het klant_id telt van 1 tot 4 en dan gaat ie verder bij 8 dat vind ik niet mooi. Is daar niets meer aan te doen?
Ik heb nog nooit een database geexporteert, ik zal me daar meer in verdiepen. Ook m.b.t. het nog veranderen van dingen. Tot nu toe heb ik ook alleen lokaal gewerkt, maar een dezer dagen moet hij geupload worden. Dan moet ik ook exporteren daar was ik nog niet aan toe gekomen.
Het is meer zo gegaan dat ik hem goed heb gevuld en daarna ben gaan testen. Ik begrijp uit bovenstaande dat ik dit alles niet moet bewaren maar beter de volgende keer eerst alles met onzin data kan uittesten en daarna goed vullen en dan online zette. Het is geen omvangrijke database, misschien is het handigst om een tabel te legen ??? en dan opnieuw in te vullen?
en daarna de id kolom weer netjes oplopend hebben.
Wat is oplopend? Het id moet uniek zijn en niet meer dan dat! Ga er geen betekenis aan kennen, id 2 is niet belangrijker, ouder, of groter dan id 3! Vergeet iedere wiskundige betekenis van het getal, het is UITSLUITEND bedoelt om unieke records te genereren.
Blijf hier in vredesnaam met je vingers van af. Het levert niks op, id heeft namelijk geen betekenis, en kan alleen maar problemen opleveren.
Gezien Renew gezegd heeft dat het hier maar een kleine tabel betreft denk ik dat het met die problemen wel reuze mee zal vallen in zijn geval. En als je twijfelt maak je toch gewoon eerst even een backup.
Het resetten kan idd zoals Martijn aangeeft.
Als je je tabel doet exporteren via PHPmyAdmin krijg je een dump die hierzo op lijkt:
<?php
--
-- Tabel structuur voor tabel `jouwtabel`
--
Copy-paste deze text in een text bestandje (rename even naar .sql) en pas dan het stukje aan waar staat: "AUTO_INCREMENT=", en zorg dat die op 0 staat. Sla hem op. Verwijdere de oude tabel, en importeer een nieuwe aan de hand van het net opgeslagen bestandje. Zo kan het in iedergeval.