Mysql 5.7 katı modunu 5.6'daki durumuna geri döndürmenin doğru yolu nedir?


10

Sunucumuzu Mysql 5.7 içeren Ubuntu 16'ya yükselttim ve varsayılan olarak Sıkı Mod etkin (yapılandırma dosyalarının herhangi birinde bir giriş olmamasına rağmen).

Mysql 5.6 ve daha önceki sürümler altında üretimde olan veritabanlarını içe aktarmada sorun yaşıyoruz ve bunun nedeni katı mod. Varsayılan olarak, etkinleştirilenler şunlardır:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY

MySQL 5.7'yi 5.6'daki gibi çalışacak şekilde nasıl yapılandırabilirim ki 5.6'daki veritabanları 5.7 ile uyumlu olacak şekilde?


Bu yanıtı deneyin: stackoverflow.com/a/34426883/534883 olay OSX için olsa da, Ubuntu üzerinde benim için çalıştı.
Pit

Yanıtlar:


34

Sıkı SQL modunu devre dışı bırakmak için, sunucunuza SSH olarak girin rootve şu dosyayı oluşturun:

/etc/mysql/conf.d/disable_strict_mode.cnf

Dosyayı açın ve şu iki satırı girin:

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

MySQL'i şu komutla yeniden başlatın:

sudo service mysql restart

Bu değişiklik iki SQL modu ayarını devre dışı bırakır STRICT_TRANS_TABLESve ONLY_FULL_GROUP_BYMySQL 5.7'de eklenir ve bazı eski uygulamalar için sorunlara neden olur.

Sıkı SQL Modunu Onaylama Devre Dışı Bırakıldı

Bu komutu aşağıdaki gibi çalıştırarak katı SQL modunun devre dışı olduğunu doğrulayabilirsiniz root:

 sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

Katı mod devre dışıysa, bu komuttan herhangi bir çıktı görmezsiniz.

Katı modu devre dışı bırakmak sizin için herhangi bir soruna neden oluyorsa, bu dosyayı silerek ve MySQL'i yeniden başlatarak tekrar etkinleştirebilirsiniz.

Kaynak: MySQL 5.7 sıkı SQL modunu devre dışı bırakma


2
Bu doğru bir cevaptır ve bu kabul edilmiş olarak işaretlenmiş olmalıdır.
budhajeewa

Neden komut mysql komut döner çalıştıran vermez: mysql: [ERROR] Found option without preceding group in config file /etc/mysql/conf.d/disable_strict_mode.cnf at line 1!?
Abhishek Saini

1
@AbhishekSaini, bir göz atın bu ve bu .
Bilal

1
Bu bir cevap. Lütfen bunu yanıt olarak belirtin.
Lasitha Benaragama

0

Set sql_modeiçinde /etc/mysql/mysql.conf.d/mysqld.cnfolmadan STRICT_TRANS_TABLES.

Altına ekle [mysqld]:

sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.