SORU
12 AĞUSTOS 2010, PERŞEMBE


Neden't bir METİN sütun MySQL varsayılan bir değeri olabilir?

Eğer bir tablo üzerinde bir METİN sütun oluşturun ve MySQL varsayılan bir değer vermek için çalışırsanız, bir hata (Windows üzerinde en azından). Mesaj atamam bir sütunun varsayılan değeri olmaması için bir sebep görmüyorum. Hiçbir açıklama MySQL belgelerine göre verilir. Bana mantıksız (ve varsayılan değeri istediğim gibi biraz sinir bozucu!) gibi görünüyor. Kimse buna izin verilmiyor neden biliyor musun?

CEVAP
29 Aralık 2010, ÇARŞAMBA


Windows v5 MySQL bir hata atar ama Linux ve diğer sürümler sadece bir uyarı yükseltir. Bu sabit olması gerekir. WTF?

Ayrıca hata olarak bunu düzeltmek için bir girişim MySQL Bugtracker #19498 bakın:

Nisan Bryce Nesbitt 4 2008 4:36: shulman
MS Windows" kuralı, diğer platformlarda ise genellikle bir uyarıdır. bir hata "hiçbir VARSAYILAN Bir hata olmasa da, mümkünse yumuşak bir platform kod ve sıkı bir platformda çalıştırmak sonra yazarsan bu durumda:

Şahsen, bir hata olarak görmek istiyorum. METİN sütuna varsayılan bir değer olabilir mi/"BLOB" Google hakkında 2,940 sonuç verir. aranıyor Bunların çoğu bir sistem ama diğerlerini çalışan DB komut dosyaları yüklemeye çalışırken uyumsuzluklar raporlar.

Şimdi aynı sorun benim müşteri biri için modifiye edeceğim bir Web uygulaması içine, aslında Linux MySQL v5 kurulan çalıştırıyorum.0.83 günlük. Windows v5 MySQL koşuyorum.1.41. Hatta phpMyAdmin son sürüm veritabanı ayıklamak için kullanmaya çalışıyor, söz konusu METİN sütun için bir varsayılan rapor değil. Ben Windows (Linux dağıtımı üzerinde çalışıyor) üzerinde bir ekleme çalıştırmayı deneyin yine ABC sütun varsayılan bir hata alıyorum. Bariz varsayılan tablo olarak, bu sütun için benzersiz bir değer seçin dayanarak) yeniden ve çok yararlı almayı sonuna kadar çalışırımBLOB TEXT/sütun varsayılan değeri olamaz.

Yine, platformda temel uyumluluk sağlamak değil, kabul edilemez ve bir hata değildir.


Nasıl MySQL 5 katı modda (Windows) devre dışı bırakmak için:

  • /Benim düzenleyin.ve hat otelinde bak

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    
  • İle değiştirin

    sql_mode='MYSQL40'
    
  • MySQL servisi (mysql5 olduğunu varsayarak) yeniden başlatın

    net stop mysql5
    net start mysql5
    

Eğer root/admin erişiminiz varsa yürütmek mümkün olabilir

mysql_query("SET @@global.sql_mode='MYSQL40'");

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009