Skocz do zawartości
Zaloguj się, aby obserwować  
Gość l3szcz

Problem z zapytaniami

Polecane posty

Gość l3szcz

Witajcie,

taki problemik mam z bazą danych.

 

Wyskakuje mi błąd: Field `nazwa..` doesn't have a default value.

 

Z tego co wyczytałem na stackoverflow problem dotyczy sql_mode, które ustawiłem:

sql_mode = '' wyłączając w ten sposób STRICT_TRANS_TABLES (kierowałem się: http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values)

aby serwer nie sprawdzał poprawności kolumn / wpisów.

Niestety na nic to się zdało i potrzebuję pomocy. Wersja MySQL - 5.6

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zmiana sql_mode to obejście a nie rozwiązanie.

Nie prościej Ci na pole "nazwa" nadać to czego brakuje - domyślnej wartości?

 

Co to za badziewna baza?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz

To nie jest tylko mój problem a kilku osób.
Czy mógłbyś naprowadzić na wprowadzenie takiej wartości?

Przykładowo (wyciągnięte z Tentego - skryptu nie idzie zainstalować):

if(mysql_query("CREATE TABLE IF NOT EXISTS `tablicacms_users` (`id` int(11) NOT NULL AUTO_INCREMENT,`user` varchar(16) CHARACTER SET utf8 NOT NULL,`pass` varchar(32) CHARACTER SET utf8 NOT NULL,`email` varchar(128) CHARACTER SET utf8 NOT NULL,`name` varchar(32) CHARACTER SET utf8 NOT NULL,`surname` varchar(48) CHARACTER SET utf8 NOT NULL,`date` datetime NOT NULL,`last_seen` datetime NOT NULL,`ip` varchar(15) CHARACTER SET utf8 NOT NULL,`last_ip` varchar(15) CHARACTER SET utf8 NOT NULL,`rank` int(1) NOT NULL DEFAULT '2',`active` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '1',`avatar` text CHARACTER SET utf8 NOT NULL,`remind` varchar(5) CHARACTER SET utf8 NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1") && mysql_query("INSERT INTO `tablicacms_users` (`id`, `user`, `pass`, `email`, `name`, `surname`, `date`, `rank`) VALUES (1, '".$_SESSION['install']['admin_name']."', '".md5($_SESSION['install']['admin_pass'])."', '".$_SESSION['install']['admin_email']."', '".$_SESSION['install']['admin_imie']."', '".$_SESSION['install']['admin_nazwisko']."', '".date("Y-m-d H:i:s")."', 0)")) echo 'OK';
									else exit('Błąd: '.mysql_error().'');

Błąd SQL zwraca: Field 'last_seen' doesn't have a default value chociaż last_seen nie jest w ogóle zdefiniowany przy wpisywaniu danych instalacyjnych.

 

Tak jest prawie na każdym źle rozpisanym skrypcie i biorąc to pod uwagę plus to, że na 5.5 wszystko działało bez takich problemów zastanawiam się czy istnieje możliwość jakiegokolwiek rozwiązania aby działały te ich skrypty i skrypciki?

Edytowano przez l3szcz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dodaj do inserta last_seen i wypełnij je czymś. Choć takich krzaczków może być więcej. Generalnie to tylko pokazuje jakość kodu.

 

Ewentualnie możesz wywołać zapytaniem SQL dla połączenia określony mod i wyłączyć sobie na czas instalacji tego strict_trans_tables, choć potem i tak problem może wrócić.

 

SET SESSION sql_mode = 'modes';

 

A jak chcesz uparcie to ustawić na cały serwer MySQL to napisz co to za system, czy jest tam jakiś panel i skąd jest ta instalacja mysqla(kompilacja/repo/etc). Resetowałeś MySQLa po dopisaniu tej linijki?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz

Jest to Centos 6.6, panel Directadmin, serwer instalowany razem z panelem. Po sql_mode = '' restartowałem MySQL.

 

Skorzystałem z Twojej rady i dopisałem do skryptu linijkę. Teraz ruszyło

Edytowano przez l3szcz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×