Jotkut Sisältö Hallintajärjestelmissä, kuten Typo, Contao, Contenido tai muissa järjestelmissä on ongelmia, koska MySQL 5.1 Strict Mode käytettävissä. Tämä on ollut käytössä oletusasetuksena versiosta 5.7 lähtien.
Jotta näitä CMS-järjestelmiä voitaisiin käyttää, on edelleen mahdollista kytkeä tiukka tila pois päältä palvelinpuolella. Tämä on tietenkin vain ehdollisesti suositeltavaa.
Mitä Strict-tila tekee?
MySQL/MariaDB:n tiukka tila ohjaa sitä, miten virheellisiä tai puuttuvia arvoja käsitellään tietojen muutoskyselyissä, mukaan lukien INSERT-, UPDATE- ja CREATE-ilmoitukset.
Tällä tavoin virheelliset tai puuttuvat Tiedot johtaa varoituksiin tai virheisiin SQL-kyselyä tehtäessä. Kun scrict-tila on kytketty pois päältä, virheelliset kyselyt tai puuttuvat arvot oikaistaan ja annetaan yksinkertainen varoitus. Tämä voi johtaa odottamattomiin tuloksiin.
Esimerkkinä voidaan mainita merkkirajoitus. Kun tiukka tila on kytketty pois päältä, ylimääräiset merkit typistetään, jotta ne mahtuvat.
Miksi tämä tapahtuu vain joissakin CMS-järjestelmissä?
Voidaan vain spekuloida. Luultavasti koodi on niin laaja, ettei kukaan näe sen läpi. Yhdellä sisällönhallintajärjestelmä työskentelee paljon ihmisiä, joskus he tuovat yksittäisiä toimintoja, joita ei sitten enää katsota vuosiin. Niin kauan kuin vakavia ongelmia ei esiinny, se ei ole niin paha asia.
Kun kyseessä on whmcs:n kaltainen järjestelmä, se näyttää jo erilaiselta. Jos tärkeät tiedot katkaistaan, tämä johtaa virheellisiin määrärahoihin. Tämä voi sitten muodostua ongelmalliseksi laskutuksen yhteydessä.
Missä tätä opasta voidaan soveltaa?
Ohjeet koskevat Linux-järjestelmiä, joissa on MySQL 5.6/5.7 tai MariaDB 10.1 ja sitä korkeammat, kun Strict Mode on aktiivinen.
Muutosten tekeminen edellyttää juuritunnuksia. Ohjeissamme viitataan aina Centos Linux. Muissa jakeluissa asetustiedostot voivat sijaita muissa hakemistoissa.
Vaihe 1: Luo varmuuskopiot
Kun muokkaat tiedostoja, sinun on aina tehtävä varmuuskopio. On aivan liian helppoa poistaa jotain tahattomasti.
cp -a /etc/my.cnf{,.strict.bak}
Komento luo my.cnf.strict.bak-tiedoston my.cnf-tiedostosta samaan hakemistoon.
Vaihe 2: Poista MySQL Strict Mode käytöstä.
Tiedostossa ei yleensä ole sql_mode=..., joten seuraava rivi on lisättävä kohtaan [mysqld] :
sql_mode=""
Vaihe 3: Käynnistä MySQL-palvelu uudelleen
Tiedoston muokkaamisen jälkeen palvelu on käynnistettävä uudelleen, jotta muutokset tulevat voimaan.
systemctl restart mariadb
Kun palvelu on käynnistetty uudelleen, voit tarkistaa asetuksen suorittamalla seuraavan komennon. Tässä esimerkkinä salasanan kanssa Plesk-palvelin. Vaihtoehtoisesti root ja salasana.
mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"
Tämän jälkeen näkyviin tulee seuraava ilmoitus:
+————+
| @@sql_mode |
+————+
| |
+————+