Exec kullanmadan MySQL sorgularının bir listesini Running ()

3 Cevap php

Ben yüklemek üzerinde veritabanı tabloları manuel oluşturulması gerektiren bir site var. Şu anda onlar. Sql dosyaları bir koleksiyon (başlangıçta herhangi bir veri ile birlikte) kaydedilir.

Ben CLI MySQL ile) (kullanarak otomatik oluşturmak exec denedim ve birkaç platformlarda çalışırken oldukça flakey ve ben gerçekten bu şekilde yapıyor gibi, artı hata ayıklama hataları zordur ve çok kurşun dan değil (MySQL çalıştırılabilir sistem yolunda değil, özellikle eğer).

Bunu yapmanın iyi bir yolu var mı? MySQL sorgu () komutu yalnızca sorgu başına bir sql deyimi (düğüm noktası olan) verir.

MySQLi Ben bu sorunlardan bazılarını çözmek olabilir duydum ama oldukça orijinal MySQL kütüphanede yatırım yaşıyorum ama uyumlu, istikrarlı ve yaygın bir standart sunucu yapı desteklenir ve genel olarak bir iyileşme sağladı geçmek için istekli olacaktır.

Belki temiz in situ şema maç tabloları güncellemek mümkün olacak gibi - bu başarısız Herhalde bir PHP dizi / veri yapısı oluşturma çeşit yapmak için istekli olurdu. Ben bu zaten çözülmüş olan bir sorun olabilir varsayarak yaşıyorum, bu yüzden pro / con ile herhangi bir örnek uygulama için herhangi bir bağlantıları yararlı olacaktır!

Herhangi bir fikir için şimdiden teşekkür ederiz.

3 Cevap

connecting to the datebase izin zaman Apparently istemci bayrak gibi 65536 geçebilir çok sorgular, örneğin bir SQL dize ; yararlanarak.

Ayrıca, sadece SQL dosyaların içeriği okuyabilir, gerekirse ; tarafından patlayabilir ve tüm sorguları düzgün yürütmek emin olmak için, bir işlem içinde sorguları çalıştırın.

Başka bir seçenek Phing ve dbdeploy to manage databases bakmak olacaktır.

Eğer sistemleri arasında veri taşımak için bu kullanıyorsanız, yaptıktan sonra LOAD DATA INFILE sözdizimi (http://dev.mysql.com/doc/refman/5.1/en/load-data.html) kullanmayı düşünebilirsiniz kullanılan SELECT ... INTO OUTFILE (http://dev.mysql.com/doc/refman/5.1/en/select.html)

Sen standart mysql_ * PHP fonksiyonları vasıtasıyla şema oluşturma / güncelleme komutları çalıştırabilirsiniz. Onu aramak gibi sorgu () komutu yalnızca bir deyim izin verirseniz Ve, sadece birçok kez diyoruz.

Eğer aynı çağrı içinde olmak için her şeyi gerektirir Gerçekten neden alamadım.

Her deyim sonra hataları kontrol edin ve eğer başarısız düzeltici önlemleri almalı (Eğer bir işlemde tüm ifadeleri sarmak ve başarısız olursa geri alma hangi durumda, InnoDB kullanmadığınız sürece.)