Ben "offset" adında bir ENUM alanında ve bazı diğer sütunları ile bir MySQL tablo var. : Alanı olarak tanımlanır
ENUM(0,1), olabilir, NULL, önceden tanımlanmış bir değer NULL
Şimdi iki sunucu var. Bir üretim sunucu ve geliştirme sunucu ve veritabanı oluşturmak ve güncellemek için kullanılan aynı PHP komut dosyası.
First step: uygulama "offset" CREATE sorguda geçen yanmadan kaydı oluşturun.
Second step: uygulama bazı veriler (değeri "ofset" değil) (alan "ofset" değil), bazı alanını güncelleştirmek, adımda bir eklenen satırı okumak ve bir dizi yapmak, yaratmak kullanıcıya sormak Bir otomatik bir şekilde sorgu ve güncellenen değerleri ile tekrar satır kaydedin.
Otomatik sorgu oluşturucu basit bir dizi geçirilen tüm alanını okumak ve UPDATE dizesi oluşturmak.
Her iki sistemde de ben bu diziyi edinin:
$values = array(... 'offset' => null);
ve mysql_real_escape_string değerleri geçen bu aynı sorguda dönüştürmek:
UPDATE MyTable SET values..., `offset` = '' WHERE id = '10';
Şimdi sorun var. I üretim sistemi sorgusunu başlattığınızda, satır geliştirme sistemi bir hata var ve db ofset veri satırını kaydetmeden yanlış olduğunu söylüyor, kaydedilir.
Ben ilk adım satır oluşturduğunuzda phpmyadmin itibaren, ofset alanında NULL gösterir. Hiçbir hata vermek sisteminde alanını kaydettikten sonra, bana boş bir dize göstermektedir.
Her iki sistem MySQL 5 kullanıyoruz ama üretim Windows, Linux ve geliştirme kullanım 5.0.37 üzerine 5.0.51 kullanır.
Sorular:
Neden bir sistem bana bir hata vermek, bir diğeri alanını kaydetmek? Bir yapılandırma fark var mı?
Neden bir enum "0" veya "1" "" kaydeder ve NULL değildir alanını kurtarmak alıyorsunuz?