Zum Inhalt springen

mysql feld timestamp

Erstellt am 29. März 2008 · 13 Antworten · letzte Antwort am 1. April 2008

Tags: Frage

dfluess ·

Hallo,

typo3 schreibt ja seinen eigenen Timestamp in die Tabelle.
Es ist für eine externe DB-Anbindung nun aber erforderlich, dass auch der von MYSQL automatisch erzeugte Timestamp verwendet wird. Ich habe das SQL-File der Extension als erweitert mit:

`ts` timestamp(14) NOT NULL,

Leider akzeptiert TYPO3 dieses Feld nicht und kontert mit einer Fehlermeldung. Hat jemand die Erfahrung gemacht und wie ich dieses Feld auch unter TYPO3 verwenden kann? Es ist ja ein legitimer MySQL Feldtyp.

Danke für Eure Hilfe

just2b ·

Hallo,

und einfach nachher per phpmyadmin umbenennen? nicht immer kompliziert über TYPO3 denken 😉

georg

dfluess ·

Sorry, ich steh aufm schlauch, was soll ich umbenennen?

Bedeutet das, dass der Name 'ts' ungültig ist und der Feldtyp (nicht Feldname) 'timestamp' auch mit einer Extensioin funktioniert?

just2b ·

der Name ts ist sicher nicht ungültig, zumindest kann ich mir das nicht vorstellen.

ob der typ funktioniert kann ich nicht sagen, nie gemacht, aber das sollte man ja in 5min rausfinden können (nicht ich *G*)

georg

dfluess ·

Also der name 'ts' war schon gültig, hab auch andere Namen versucht.
Es ist aber in der Tat der Feldtyp 'timestamp' der automatisch einen Zeitstempel beim Speichern einträgt.
Warum TYPO3 den Feldtyp aber nicht akzeptiert, dass ist mir schleierhaft, ist doch ein normaler Bestandteil einer jeden MySQL-Datenbank und würde den Ablauf nicht negativ beeinflussen. ...Grübel... Ich brauche aber dieses zusätzliche Feld.

steffenk ·

es gibt keinen Feldtypen timestamp, nimm int(11) (in Typo3)

dann kannst Du folgendes in phpMyAdmin machen

ALTER TABLE `tabelle` CHANGE `ts` `ts` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

dfluess ·

Woher hast du denn diese Weisheit, aber natürlich gibt es dieses Feld 🙂
Damit wird automatisch ein Zeitstempel ohne SQL-String erzeugt und eingetragen.

Zitat:
TIMESTAMP Zeitstempel-Feld. Nicht zu verwechseln mit dem UNIX-Timestamp.
Der Eintrag wird bei vorhandenem TIMESTAMP-Feld automatisch
gesetzt und eignet sich insbesondere zum Festhalten von Zeiten bei
UPDATE- und INSERT-Operationen. Erlaubter Bereich von 1970-01-
01 00:00:00 bis zum Ende des Jahres 2037.

Zum Nachlesen eine von vielen Infoseiten
http://www.personalbit.de/modules/news/article.php?storyid=127

dfluess ·

Hmm.. naja, ich bin kein DB Fachmann sorry, nur wenn ich das ausführe:

ALTER TABLE `tx_dfhsw_versorger` CHANGE `ts` `ts` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Das gibt einen Syntaxfehler in PhpMyAdmin

#1064 - Fehler in der Syntax bei 'ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP' in Zeile 1.

Was ist da nicht richtig?

dfluess ·

hi nochmal,

also damit funktioniert es:

ALTER TABLE `tabelle` CHANGE `ts` `ts` TIMESTAMP

Allerdings wird das Feld dann auch wieder "nur" ein 'timestamp' und wird im Extensionmanager wieder angemeckert.

Was soll deine sql-Zeile denn bewirken?

dfluess ·

Ich verstehe das alles nicht. Es muss doch möglich sein, den feldtyp "timestamp" nutzen zu können.

steffenk ·

mal ne Frage: warum nutzt du nicht crdate oder tstamp? Die Felder sind Standardmässig in jeder table und speichern timestamps

'tstamp' => time(),