PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] Problem mit Erstellung einer SQL Tabelle



swinxx
01.04.2018, 23:54
Hey Leute,

wieder mal möchte ich euch um Hilfe anschnorren...

Für euch ist das wahrscheinlich nur ne Kleinigkeit, aber ich hab halt wie immer absolut keinen Plan.
Es geht um die Erstellung einer SQL Tabelle für ein Rating Script das ich das ich im Web gefunden hab und einbauen möchte.

Für das Script muss ich lediglich eine Tabelle anlegen, dabei bekomme ich aber eine Fehlermeldung.

Der Code zum anlegen lautet:


CREATE TABLE IF NOT EXISTS `rateme` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rate_id` varchar(250) NOT NULL,
`rating` tinyint(1) NOT NULL,
`date_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip_address` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1

Und dabei bekomme ich diese Fehlermeldung:

#1067 - Invalid default value for 'date_time'

Wieder mal würde ich mich echt freuen wenn jemand kurz die Zeit hätte mir da weiter zu helfen!
Das Script habe ich von hier: https://www.phpjabbers.com/free-rate-me-script/ (falls es jemanden interessiert)
Wenn ich noch irgendetwas mehr von dem Script posten soll bitte einfach kurz bescheid sagen dann mach ich das sofort!

Ansonsten wünsch ich noch allen schöne Ostern :)

Lg, Swinxx

tweetymr
12.04.2018, 13:30
Hi,
welche MySQL-Version läuft denn auf dem Server?
CURRENT_TIMESTAMP als Defaultwert funktioniert nur ab MySQL V5.6.5.

Davor wurden die Felder einfach mit NULL "initialisiert".

Quelle: https://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html (Abschnitt "Automatic Timestamp Properties Before MySQL 5.6.5")

Also sollte das Script eigentlich laufen wenn du entweder deine MySQL-Version updatest oder aus



`date_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,


das hier machst


`date_time` datetime,


Falls der Wert nicht NULL sein darf, musst du das entsprechende INSERT Statement dann eben noch um sowas hier erweitern:


INSERT INTO `rateme` (...,`date_time`,...) VALUES (..., NOW(), ...);


(Weiß jetzt aus dem Kopf nicht genau ob es NOW() oder CURRENT_TIMESTAMP() sein muss. Aber das kann man ja probieren.)

Ich hoffe ich konnte helfen :)

swinxx
16.04.2018, 23:34
Hey cool!

Vielen Danke, das anlegen der Tabelle hat jetzt sofort funktioniert und ich kann das Script verwenden!

Also vielen Dank nochmal!

Lg, Swinxx