This sounds awfully like doing an rm -rf somefile. * (with an accidental space in between the . and the *).
Most unix/linux geeks I know (including myself) only ever do this once. Humans like to learn the hard way, it seems :-) -- boof On Thursday 22 June 2006 03:24, Harrison Fisk wrote: > Hi, > > On Jun 21, 2006, at 12:24 PM, Kevin Old wrote: > > On 6/21/06, Barry <[EMAIL PROTECTED]> wrote: > >> Kevin Old schrieb: > >> > Hello everyone, > >> > > >> > I had a horrible thing happen to me this morning and wanted to > >> > >> make it > >> > >> > known to the community. > >> > > >> > I needed to delete a record from a very large table (yes, it was > >> > backed up) and like the cli interface of mysql. I ran this query: > >> > > >> > delete from tablename where id - 12345; > >> > > >> > Notice that I accidentally hit the dash (-) instead of the equal > >> > >> (=). > >> > >> > It proved to be disasterous as it deleted all the records from that > >> > table. > >> > > >> > Lucky for me I had a backup from last night and not too many > >> > >> records > >> > >> > were added since then and I was able to restore. > >> > > >> > For the record, I am aware of the "select before delete" method, > >> > >> but > >> > >> > didn't use it in this one instance and it meant a few hours > >> > >> restoring > >> > >> > data. > >> > > >> > Just wanted to throw this out and see if others had possible > >> > >> solutions > >> > >> > for working with the mysql cli interface for maybe setting up > >> > >> "rules" > >> > >> > for it to cancel a query if it contains a certain character > >> > >> (like the > >> > >> > dash). Fat chance there is, but I thought I'd ask. > >> > > >> > Hope this helps someone, > >> > Kevin > >> > >> On this one use LIMIT. > >> If you want to delete specific rows alway use LIMIT. > >> > >> even if you f**k up you "just" have deleted one row. > >> > >> If you are luck it is an old one and easy restoreable. > > > > Hi Barry, > > > > So if I understand you correctly, I'd do the following: > > > > delete from tablename where id - 12345 limit 1; > > > > Is that correct? > > That still will delete one row, so you still might need a backup to > get back that row. > > Another option you might want to look into is using the --safe- > updates option to the command line client. This will prevent you > from doing DELETEs and UPDATEs that don't use an index properly. For > example, in your case deleting the entire table would have been > prevented, whereas the correct id = 12345 would be allowed (assuming > id is the PK or index). I generally always use that option on a > production machine. > > It does a few other things as well (LIMIT 1000, max_join_size), so > make sure you check it out before using it. It used to be called --i- > am-a-dummy mode (that option works too), so you might see it referred > to as that in some places. > > http://dev.mysql.com/doc/refman/5.0/en/safe-updates.html > > Regards, > > Harrison > > -- > Harrison C. Fisk, Trainer and Consultant > MySQL AB, www.mysql.com > > Get a jumpstart on MySQL Cluster -- http://www.mysql.com/consulting/ > packaged/cluster.html -- brendan bouffler Architect, HPC & New Technology APJ ESS Competency Lab x: Sydney, Australia, v: +61 404 097 837 mtb: 2003 Tassajara -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]