आप उस तालिका को छोटा नहीं कर सकते जो लिखने के लिए बंद है। ऐसा इसलिए है क्योंकि "ट्रंकेट" का अर्थ है "तालिका को नष्ट करें, और उसी स्कीमा के साथ एक नया बनाएं।"
हालांकि, आप खाली कर सकते हैं टेबल। TRUNCATE TABLE asin_one_time_only
. के बजाय DELETE FROM asin_one_time_only
. का उपयोग करें . ध्यान दें कि यह ऑटोइनक्रिकमेंट नंबरिंग को रीसेट नहीं करेगा। अगर आप इसे भी रीसेट करना चाहते हैं, तो ALTER TABLE asin_one_time_only auto_increment=1
का उपयोग करें
मैं ऐसा करने का सुझाव देता हूं:
LOCK TABLES asin_one_time_only READ;
SELECT asin FROM asin_one_time_only;
-- minimize the possibility of someone writing to the table in-between
-- an "UNLOCK TABLES" and a "LOCK TABLES" by just issuing a new LOCK TABLES
-- I am not 100% sure that MySQL will do this atomically, so there is a
-- possibility that you may delete a row that was not read.
-- If this is unacceptable, then use a "LOCK TABLES asin_one_time_only WRITE"
-- from the very beginning.
LOCK TABLES asin_one_time_only WRITE;
DELETE FROM asin_one_time_only;
ALTER TABLE asin_one_time_only auto_increment=1;
UNLOCK TABLES;