2011-03-29 21 views
49

Mysqldump'a ekleme ifadelerinde sütun adlarıyla yedeklemeye nasıl talimat veririm? Benim durumumda
yaptım normal bir insert sql enMysqldump: Yedekleme sırasında ekler için sütun adları oluşturma

LOCK TABLES `users` WRITE; 
/*!40000 ALTER TABLE `users` 
INSERT INTO `users` VALUES (1 

yapısı ile sonuçlanan ile yedekleyin.

Şimdi ileride gittim ve , kullanıcılardaki şemadan bir sütun kaldırıldı. Bundan sonra yedek sql'leri çalıştırdığımda sütun numarası uyuşmazlığı hatası olsun.

Bunu düzeltmek için mysqldump öğesinin de sütun adları yazmasını istemekle ilgili nasıl giderim? İşte Ben daha geniş bir düzeyde artık

mysqldump --host=${dbserver} --user=${dbusername} --password=${dbpassword} \ 
      --no-create-db --no-create-info --extended-insert --single-transaction \ 
      --compress tablename 

böyle yaparız, bu şema değişiklikleri yönetmek için en iyi yöntem nedir?

+1

parametreler Mysqldump komuta Kullanım --complete-insert? Bir sütunu sildikten sonra, belirtilen alanlarla sorgu bile yanlış olur. – zerkms

cevap

113

açıkça belirtilen alanlar size sağlayacağı

+6

Bunun neden mysqldump için varsayılan davranış olmamasının aklı başında bir nedeni var mı? – paradiso

+4

@paradiso Çünkü "mysqldump" yedekler için yoğun bir şekilde kullanıldığından ve mümkün olduğu kadar küçük olduğu için iyi bir şey olduğuna inanıyorum. – Cacovsky

+6

@paradiso ayrıca mysqldump'ın varsayılan olarak yapıyı ve verileri boşa harcadığını ve böylece sütun isimleri bilgilerinin işe yaramayacağını belirtir. Sütun adlarının belirtilmesi, değerleri verileri ayıkladığınızdan farklı olabilecek bir tabloya yüklediğinizde yararlıdır. – Ninj