Skocz do zawartości


 

Zdjęcie

phpmyadmin blad #1293

phpmyadmin blad #1293

  • Proszę się zalogować aby odpowiedzieć
4 odpowiedzi na ten temat

phpmyadmin blad #1293

#1 sniferek

sniferek

    Często na forum

  • Użytkownicy
  • 64 postów
  • Imię:Łukasz

Napisany 03 maj 2017 - 10:28

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


  • 0

#2 Fizyda

Fizyda

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 495 postów

Napisany 03 maj 2017 - 10:52

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.


  • 0

#3 sniferek

sniferek

    Często na forum

  • Użytkownicy
  • 64 postów
  • Imię:Łukasz

Napisany 03 maj 2017 - 11:02

tak, tylko ja kto teraz zmienić aby było odpowiednio 


  • 0

#4 Fizyda

Fizyda

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 495 postów

Napisany 03 maj 2017 - 11:42

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.


  • 0

#5 Pan Kot

Pan Kot

    Mrrr

  • Zbanowani
  • PipPipPipPipPipPipPipPip
  • 2819 postów

Napisany 04 maj 2017 - 01:13

Nie wiem jak prehistoryczną wersję MySQLa musisz tam mieć, bo to wymaganie zostało zniesione w roku 2012. Sam mam kilka kolumn tak podefiniowanych.


Edytowany przez Archi, 04 maj 2017 - 01:14.

  • 0





0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników