MySQL
Chrisi
- datenbank
Hallo zusammen,
ganz dummes Problem das ich hier habe, vieleicht hat ja jemand Rat für mich:
Ich nutze MySQL 4.1.12 MAX und habe hier eine Datenbank importiert in der es eine Spalte names "regdate" gibt. Diese Splate erfasst das Registrierungdatum also eine MySQL Timestamp für die Erstellung des Datnsatzes. Soweit Prima :)
Wenn ich jetzt aber mit dem phpMyAdmin hingehe und an dem Datensatz irgendwas ändere aktualisiert er mir immer automatisch die Splate regdate und setz die timestamp mit NOW() neu.
Nun habe ich festgestellt das der phpMyAdmin beim ändern der Daten in diesem Dropdownmenu wo die Funktionen drin stehen automatisch schon NOW() auswählt, wenn ich dies von Hand wechmache lässt er mir natürlich auch das alte Datum drinnen.
Es muss also jemand beim anlegen der Struktur für diese Spalte als Standard NOW() festgelegt haben, was auch hinkommt weil unter Standard "CURRENT_TIMESTAMP" stand.
Nun meine Frage, wie kann diese autmotaisch zugeordnete Funktion wieder entfernen ? Wenn ich eine neue Splate anlege und den Standard auf 0000-00-00 00:00:00 stelle setzt er mir kein neues Datum, also so wie ich es haben will. Lösche ich aber regdate und llege Sie mit den gleichen Einstellungen wie die Testspalte wieder an ist die Aktualisierung wieder mit drin, also muss da irgendwo noch was abgespeichert sein was ich aber über den phpMyAdmin nicht sehen kann...
Hat da jemand einen Tipp ?
Viele Grüße und danke, Chrisi
hi,
Wenn ich jetzt aber mit dem phpMyAdmin hingehe und an dem Datensatz irgendwas ändere aktualisiert er mir immer automatisch die Splate regdate und setz die timestamp mit NOW() neu.
works as designed.
http://dev.mysql.com/doc/mysql/de/datetime.html:
"Der TIMESTAMP-Typ ist ein Typ, den Sie dafür benutzen können, um INSERT- oder UPDATE-Operationen mit dem aktuellen Datum und der aktuellen Zeit zu stempeln. Wenn Sie mehrfache TIMESTAMP-Spalten haben, wird nur die erste automatisch aktualisiert.
Die automatische Aktualisierung der TIMESTAMP-Spalte geschieht unter einer der folgenden Bedingungen:
Nun habe ich festgestellt das der phpMyAdmin beim ändern der Daten in diesem Dropdownmenu wo die Funktionen drin stehen automatisch schon NOW() auswählt, wenn ich dies von Hand wechmache lässt er mir natürlich auch das alte Datum drinnen.
Es muss also jemand beim anlegen der Struktur für diese Spalte als Standard NOW() festgelegt haben, was auch hinkommt weil unter Standard "CURRENT_TIMESTAMP" stand.
nein, s.o.
das "weglassen" des wertes ergänzt PMA vermutlich durch spalte=spalte, um den originalen timestamp zu bewahren.
Nun meine Frage, wie kann diese autmotaisch zugeordnete Funktion wieder entfernen ?
gar nicht, weil das definiertes verhalten ist.
Wenn ich eine neue Splate anlege und den Standard auf 0000-00-00 00:00:00 stelle setzt er mir kein neues Datum, also so wie ich es haben will. Lösche ich aber regdate und llege Sie mit den gleichen Einstellungen wie die Testspalte wieder an ist die Aktualisierung wieder mit drin, also muss da irgendwo noch was abgespeichert sein
nein, siehe ebenfalls obiger link:
"Wenn Sie mehrfache TIMESTAMP-Spalten haben, wird nur die erste automatisch aktualisiert."
gruß,
wahsaga
echo $begrüßung;
Ab Version 4.1 hat sich aber das Timestamp-Verhalten geändert:
http://dev.mysql.com/doc/mysql/en/timestamp-4-1.html
echo "$verabschiedung $name";
Hi,
danke nochmal für eure Hilfe, habe den Spaltentyp jetzt auf DATETIME umgestellt, und eine extra Splate lastchange hinzugefügt die vom Typ TIMESTAMP ist, klappt bis jetzt alles Prima.
Viele Grüße, Chrisi
Hi Wahsaga,
danke für deinen Tipp !
Ich muss eingestehen ich wäre niemals auf die Idee gekommen in der Doku nachzuschauen, weil mir das verhalten von MySQL eher als nutzlos erscheint.
TIMESTAMP sagt ja in diesem Fall eigentlich deutlich das es um einen Stempel geht, fände es aber wesentlich angenehmer wenn mir MySQL die Aktualisierung meiner Daten selber überlassen würde, wenn es denn schon so sein muss dann hätten die Leute das wenigstens durchgehend für alle Splaten machen können.
Dann werde ich mich mal ans Werk machen um dieses Problemchen aus der Welt zu schafen ...
Viele Grüße, Chrisi
Hi
Ist mir zwar ned bekannt woran das liegt, aber
ich hab mal rumprobiert... :)
Änder mal den Datentyp von Timestamp auf Datetime und dann wieder zurück nach timestamp mit dem Standartwert "0000-00-00 00:00:00"
Bei mir ging es dann...
Ohne de Weg über Datetime gings bei mir auch ned ;)
Grüsse
Stefan
P.S. bitte mit nem Backup machen ;)
Fuppes ;)
klappt doch ned...
der Eintrag in phpmyadmin ist dann zwar weg... und aktualisiert aich auch nimmer, aber er updatet immer noch munter ;)
Aber ich hätt noch ne Idee..
Nimm doch einfach Datetime anstatt Timestamp, dann biste dein problem los... natürlich nur wenn es deine Applikation erlaubt....
Grüsse
Stefan