[MySQL] Timestamp-problemen na MySQL-upgrade

Pagina: 1
Acties:

  • Parmenides
  • Registratie: Juni 2003
  • Laatst online: 02-08-2025
Mijn hostingprovider heeft een paar dagen geleden een upgrade naar MySQL 4.1.14 uitgevoerd. Sindsdien werkt het 'datum_invoer'-veld in mijn database niet meer.

Om het hele plaatje te schetsen: alle records in m'n database hebben een veld 'laatst_gewijzigd' en een veld 'datum_invoer'. Beide velden zijn van het type 'TIMESTAMP' en hebben een null-waarde. In het eerste veld moet de datum bij invoer of bij wijziging komen te staan (deze kan bij latere updates veranderen), en in het tweede veld de invoerdatum (deze kan niet meer veranderen).

Records die ik na de upgrade invoer, hebben wel een datum in het veld 'laatst_gewijzigd' maar in het veld 'datum_invoer' staat nu standaard 0000-00-00 00:00:00.

Heeft iemand ervaring met dit probleem? Hoe zorg ik ervoor dat het 'datum_invoer'-veld weer werkt?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Je hebt een verkeerd idee bij het TIMESTAMP type. TIMESTAMP is een speciaal veld, dat door MySQL automatisch geupdate wordt als je je record wijzigt. Er kan dus ook maar één TIMESTAMP veld in je tabel staan; althans slechts één van die TIMESTAMPs zal nut hebben. Als je een UNIX timestamp wil opslaan, dan kun je beter een integer gebruiken geloof ik, of je kan een DATE_TIME type nemen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 13:28
Maar was er niet iets dat wanneer je nu bij een update een NULL naar je timestamp schrijft, dat 'ie dan ook geupdate wordt, ook al is het niet de eerste timestamp ?

* StevenK is trouwens van de timestamps afgestapt vanwege dit soort ellende, gewoon in de insert en update statements een datum=getdate() :)

edit: curdate() dan maar, getdate() is een andere databasesmaak.

[ Voor 13% gewijzigd door StevenK op 04-02-2006 17:42 ]

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Parmenides
  • Registratie: Juni 2003
  • Laatst online: 02-08-2025
-NMe- schreef op zaterdag 04 februari 2006 @ 17:29:
Je hebt een verkeerd idee bij het TIMESTAMP type. TIMESTAMP is een speciaal veld, dat door MySQL automatisch geupdate wordt als je je record wijzigt. Er kan dus ook maar één TIMESTAMP veld in je tabel staan; althans slechts één van die TIMESTAMPs zal nut hebben. Als je een UNIX timestamp wil opslaan, dan kun je beter een integer gebruiken geloof ik, of je kan een DATE_TIME type nemen.
Volgens de MySQL 5.0 Reference Manual is het wel degelijk mogelijk om meerdere TIMESTAMP-velden te gebruiken, dus dat kan het niet zijn. Bovendien: het werkte een paar dagen geleden nog!

Nog vergeten de melden, maar wel belangrijk: de standaardwaarde van het 'laatst_gewijzigd'-veld is CURRENT_TIMESTAMP en de standaardwaarde van het 'datum_invoer'-veld is 0000-00-00 00:00:00. Elke poging de eerste of de tweede waarde te veranderen leidt ertoe dat de waarde naar 0000-00-00 00:00:00 schiet.

[ Voor 17% gewijzigd door Parmenides op 05-02-2006 10:29 ]