{"id":2030,"date":"2018-01-14T09:44:02","date_gmt":"2018-01-14T08:44:02","guid":{"rendered":"http:\/\/blog.techmedia.pl\/?p=2030"},"modified":"2019-12-18T21:02:38","modified_gmt":"2019-12-18T20:02:38","slug":"mysql","status":"publish","type":"post","link":"https:\/\/www.techmedia.pl\/blog\/mysql\/","title":{"rendered":"MySQL error 1364 Field doesn&#8217;t have a default values"},"content":{"rendered":"<p>Od\u00a0 wersji 5.7 serwera MySQL parametr <span style=\"color: #ff0000;\">strict mode<\/span> jest domy\u015blnie ustawiony w jego konfiguracji po instalacji serwera. W konsekwencji tego, je\u015bli pola nie maj\u0105 ustawionej domy\u015blnej warto\u015bci, wyst\u0119puje b\u0142\u0105d zapisu danych do bazy.<\/p>\n<p>Mamy dwa wyj\u015bcia: mo\u017cemy zaktualizowa\u0107 aplikacj\u0119 i ustawi\u0107 dla wszystkich p\u00f3l w bazie danych domy\u015blne warto\u015bci, albo zmieni\u0107 konfiguracj\u0119 serwera.<\/p>\n<p>Wybieraj\u0105c drugie rozwi\u0105zanie edytujemy plik <span style=\"color: #ff0000;\">\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/span><!--more--><\/p>\n<pre>root@server:\/# <strong>vim \/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/strong><\/pre>\n<p>Odszukujemy sekcj\u0119 [mysqld], kt\u00f3ra domy\u015blnie powinna mie\u0107 ustawione poni\u017csze warto\u015bci:<\/p>\n<pre>[mysqld]\r\nsql_mode = \"STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"<\/pre>\n<p>i usuwamy z parametr\u00f3w warto\u015b\u0107 <span style=\"color: #ff0000;\">STRICT_TRANS_TABLES<\/span>, jak poni\u017cej:<\/p>\n<pre>[mysqld]\r\nsql_mode = \"ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"\r\n<\/pre>\n<p>W przypadku dalszych problem\u00f3w z dzia\u0142aniem naszych aplikacji, problemem mog\u0105 by\u0107 jeszcze 3 parametry: ONLY_FULL_GROUP_BY, NO_ZERO_IN_DATE, NO_ZERO_DATE.<\/p>\n<p>Post\u0119pujemy jak poprzednio i usuwamy problematyczne parametry pracy serwera:<\/p>\n<pre>[mysqld]\r\nsql_mode = \"ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"<\/pre>\n<p>Je\u015bli z pliku <span style=\"color: #ff0000;\">\/etc\/mysql\/my.cnf<\/span> nie mamy sekcji <span style=\"color: #ff0000;\">[mysqld]<\/span> lub w tej sekcji nie ma parametru <span style=\"color: #ff0000;\">sql_mode<\/span> dopisujemy j\u0105 razem z odpowiednimi parametrami lub sam parametr.<\/p>\n<p>Na zako\u0144czenie restartujemy serwer MySQL.<\/p>\n<pre>root@server:\/# <strong>systemctl restart mysql<\/strong><\/pre>\n<p>Po restarcie mo\u017cemy sprawdzi\u0107 czy zmienione zosta\u0142y parametry pracy serwera. W poni\u017cszym poleceniu zamiast &#8222;user&#8221; i &#8222;password&#8221; wstawiamy oczywi\u015bcie dane u\u017cytkownika, kt\u00f3ry ma prawa do logowania do serwera MySQL.<\/p>\n<pre>root@server:\/#  <strong>mysql -u user -ppassword -e \"select @@sql_mode\"\r\n<\/strong><\/pre>\n<p>powinni\u015bmy otrzyma\u0107 podobny wynik:<\/p>\n<pre>+-----------------------------------------------------------------------+\r\n| @@sql_mode                                                            |\r\n+-----------------------------------------------------------------------+\r\n| ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |\r\n+-----------------------------------------------------------------------+<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Od\u00a0 wersji 5.7 serwera MySQL parametr strict mode jest domy\u015blnie ustawiony w jego konfiguracji po instalacji serwera. W konsekwencji tego, je\u015bli pola nie maj\u0105 ustawionej domy\u015blnej warto\u015bci, wyst\u0119puje b\u0142\u0105d zapisu danych do bazy. Mamy dwa wyj\u015bcia: mo\u017cemy zaktualizowa\u0107 aplikacj\u0119 i ustawi\u0107 dla wszystkich p\u00f3l w bazie danych domy\u015blne warto\u015bci, albo zmieni\u0107 konfiguracj\u0119 serwera. Wybieraj\u0105c drugie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[250,168,86,296],"yst_prominent_words":[639,648,645,647,407,642,640,650,643,651,644,641,649,646],"_links":{"self":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2030"}],"collection":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/comments?post=2030"}],"version-history":[{"count":9,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2030\/revisions"}],"predecessor-version":[{"id":2615,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/posts\/2030\/revisions\/2615"}],"wp:attachment":[{"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/media?parent=2030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/categories?post=2030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/tags?post=2030"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.techmedia.pl\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=2030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}