Skocz do zawartości
sniferek

phpmyadmin blad #1293

Polecane posty

witam, mam zapytanie dlaczego nie mogę wgrać zapytania w phpmyadmin:

CREATE TABLE IF NOT EXISTS `players` (
`uid` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`aliases` text NOT NULL,
`pid` varchar(17) NOT NULL,
`cash` int(100) NOT NULL DEFAULT '0',
`bankacc` int(100) NOT NULL DEFAULT '0',
`coplevel` enum('0','1','2','3','4','5','6','7') NOT NULL DEFAULT '0',
`mediclevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`civ_licenses` text NOT NULL,
`cop_licenses` text NOT NULL,
`med_licenses` text NOT NULL,
`civ_gear` text NOT NULL,
`cop_gear` text NOT NULL,
`med_gear` text NOT NULL,
`civ_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`cop_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`med_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`arrested` tinyint(1) NOT NULL DEFAULT '0',
`adminlevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`donorlevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`blacklist` tinyint(1) NOT NULL DEFAULT '0',
`civ_alive` tinyint(1) NOT NULL DEFAULT '0',
`civ_position` varchar(64) NOT NULL DEFAULT '"[]"',
`playtime` varchar(32) NOT NULL DEFAULT '"[0,0,0]"',
`insert_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`last_seen` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uid`),
UNIQUE KEY `pid` (`pid`),
KEY `name` (`name`),
KEY `blacklist` (`blacklist`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=12 ;


a błąd jest taki:

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ponieważ:

 

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Tłumacząc na nasze bo widzę że to jest problemem, możesz mieć tylko jedną kolumnę timestamp z ustawionym current_timestamp domyślnie lub podczas aktualizacji rekordu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

np:

CREATE TABLE IF NOT EXISTS `players` (
`uid` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`aliases` text NOT NULL,
`pid` varchar(17) NOT NULL,
`cash` int(100) NOT NULL DEFAULT '0',
`bankacc` int(100) NOT NULL DEFAULT '0',
`coplevel` enum('0','1','2','3','4','5','6','7') NOT NULL DEFAULT '0',
`mediclevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`civ_licenses` text NOT NULL,
`cop_licenses` text NOT NULL,
`med_licenses` text NOT NULL,
`civ_gear` text NOT NULL,
`cop_gear` text NOT NULL,
`med_gear` text NOT NULL,
`civ_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`cop_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`med_stats` varchar(32) NOT NULL DEFAULT '"[100,100,0]"',
`arrested` tinyint(1) NOT NULL DEFAULT '0',
`adminlevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`donorlevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`blacklist` tinyint(1) NOT NULL DEFAULT '0',
`civ_alive` tinyint(1) NOT NULL DEFAULT '0',
`civ_position` varchar(64) NOT NULL DEFAULT '"[]"',
`playtime` varchar(32) NOT NULL DEFAULT '"[0,0,0]"',
`insert_time` timestamp,
`last_seen` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uid`),
UNIQUE KEY `pid` (`pid`),
KEY `name` (`name`),
KEY `blacklist` (`blacklist`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=12 ;

Tylko musisz zawsze podać czas z dla insert_time, ewentualnie pobrać go z last_seen przy insercie. Chyba da się to zrobić jakimś trigerrem, dokładnie Ci nie powiem bo takich rzeczy nie robię. Wiem że się da, musisz napisać funkcję dla bazy danych która będzie reagowała na event dodawania rekordu do tabeli.

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ę


×