datum 0000-000-000- osv

  • Författare
  • Meddelande

wille83

css-hackare

  • Inlägg: 25
  • Blev medlem: 07 feb 2019, 23:03

datum 0000-000-000- osv

Inlägg14 mar 2019, 15:24

Hej,

Jag kör följande i en av mina tabeller:
Kod: Markera allt
order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Jag för dock 0000:00:00:000.. osv på datumet

https://files.gitter.im/dbwebb-se/datab ... /image.png

Vad tros kan vara felet?
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10729
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: datum 0000-000-000- osv

Inlägg14 mar 2019, 18:22

Bilden du länkar till kommer från ett javascript-program/websida.

Gör en INSERT och sedan en SELECT på tabellen i workbench/terminalklient och se hur datat ser ut i databasen.

På det viset kan du testa om det är fel i databasen, eller i din JS-kod.
...
..:
.... /mos

wille83

css-hackare

  • Inlägg: 25
  • Blev medlem: 07 feb 2019, 23:03

Re: datum 0000-000-000- osv

Inlägg15 mar 2019, 00:01

mos skrev:Bilden du länkar till kommer från ett javascript-program/websida.

Gör en INSERT och sedan en SELECT på tabellen i workbench/terminalklient och se hur datat ser ut i databasen.

På det viset kan du testa om det är fel i databasen, eller i din JS-kod.


Hejsan,

Jag testade i workbench och det verkar vara fel i databasen.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10729
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: datum 0000-000-000- osv

Inlägg15 mar 2019, 15:30

Jag gjorde ett test, så här ska det se ut.
Kod: Markera allt
MySQL [dbwebb]> CREATE TABLE o (id INT, order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.07 sec)

MySQL [dbwebb]> INSERT INTO o (id) VALUES (1);
Query OK, 1 row affected (0.01 sec)

MySQL [dbwebb]> SELECT * FROM o;
+------+---------------------+
| id   | order_datum         |
+------+---------------------+
|    1 | 2019-03-15 13:29:41 |
+------+---------------------+
1 row in set (0.00 sec)
...
..:
.... /mos

wille83

css-hackare

  • Inlägg: 25
  • Blev medlem: 07 feb 2019, 23:03

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 00:39

mos skrev:Jag gjorde ett test, så här ska det se ut.
Kod: Markera allt
MySQL [dbwebb]> CREATE TABLE o (id INT, order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.07 sec)

MySQL [dbwebb]> INSERT INTO o (id) VALUES (1);
Query OK, 1 row affected (0.01 sec)

MySQL [dbwebb]> SELECT * FROM o;
+------+---------------------+
| id   | order_datum         |
+------+---------------------+
|    1 | 2019-03-15 13:29:41 |
+------+---------------------+
1 row in set (0.00 sec)


Hej Sry jag glömde helt bort denna tråd.
Jag får fortfarande bara massa nollor. Min create table serut såhär:
Kod: Markera allt
CREATE TABLE order2kund
(
    order_id INT AUTO_INCREMENT,
    Kund_id INT NOT NULL,
      Kund_f_namn VARCHAR(45) NOT NULL,
      Kund_e_namn VARCHAR(45) NOT NULL,
      order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                                       ON UPDATE CURRENT_TIMESTAMP,
      deleted TIMESTAMP DEFAULT NULL,

    order_antal_kund INT,
      order_tot_pris INT,

      order_status VARCHAR(15),

      FOREIGN KEY (Kund_id) REFERENCES kund(Kund_id) ON DELETE CASCADE,

      PRIMARY KEY (order_id)
);


Reslutatet blir 0000:00:00:000...osv på datumet.
Dock verkar update funka som den skall. Förstårinte vad felet är.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10729
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 09:12

Om jag skapar din tabell, något förenklad.
Kod: Markera allt
CREATE TABLE order2kund
(
    order_id INT AUTO_INCREMENT,
      order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                                       ON UPDATE CURRENT_TIMESTAMP,
      deleted TIMESTAMP DEFAULT NULL,

      PRIMARY KEY (order_id)
);


Och sedan lägger in en rad i den.
Kod: Markera allt
INSERT INTO order2kund (order_id) VALUES (1), (2);


Och till slut ser jag vad som ligger i tabellen, så blir det så här.
Kod: Markera allt
mysql> SELECT * FROM order2kund;
+----------+---------------------+---------------------+---------+
| order_id | order_datum         | updated             | deleted |
+----------+---------------------+---------------------+---------+
|        1 | 2019-03-19 07:11:03 | 2019-03-19 07:11:03 | NULL    |
|        2 | 2019-03-19 07:11:03 | 2019-03-19 07:11:03 | NULL    |
+----------+---------------------+---------------------+---------+
2 rows in set (0.00 sec)


Hur blir det för dig, och hur vill du det skall se ut?
...
..:
.... /mos

wille83

css-hackare

  • Inlägg: 25
  • Blev medlem: 07 feb 2019, 23:03

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 12:26

mos skrev:Om jag skapar din tabell, något förenklad.
Kod: Markera allt
CREATE TABLE order2kund
(
    order_id INT AUTO_INCREMENT,
      order_datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                                       ON UPDATE CURRENT_TIMESTAMP,
      deleted TIMESTAMP DEFAULT NULL,

      PRIMARY KEY (order_id)
);


Och sedan lägger in en rad i den.
Kod: Markera allt
INSERT INTO order2kund (order_id) VALUES (1), (2);


Och till slut ser jag vad som ligger i tabellen, så blir det så här.
Kod: Markera allt
mysql> SELECT * FROM order2kund;
+----------+---------------------+---------------------+---------+
| order_id | order_datum         | updated             | deleted |
+----------+---------------------+---------------------+---------+
|        1 | 2019-03-19 07:11:03 | 2019-03-19 07:11:03 | NULL    |
|        2 | 2019-03-19 07:11:03 | 2019-03-19 07:11:03 | NULL    |
+----------+---------------------+---------------------+---------+
2 rows in set (0.00 sec)


Hur blir det för dig, och hur vill du det skall se ut?


Okej då äre det något annat som är fel. Såhär ser mina värden ut(länk till bild nedan):
https://ibb.co/8BzpxcX


Koden för insert serut såhär. Finns det ngt som kan vara fel där?
Kod: Markera allt
DROP PROCEDURE IF EXISTS create_order_id;
DELIMITER ;;
CREATE PROCEDURE create_order_id(
      a_k_id INT,
      a_fnamn VARCHAR(45),
      a_enamn VARCHAR(45),
      a_k_adress VARCHAR(45),
      a_o_antal_k INT,
      a_tot_pris INT,
      a_o_status VARCHAR(15)
)
BEGIN
    INSERT INTO order2kund VALUES (order_id, a_k_id, a_fnamn, a_enamn, order_datum, updated, deleted, a_o_antal_k, a_tot_pris, a_o_status);
END
;;

DELIMITER ;




Jag noterade även att updaterad kolumnen inte får något värde förrns jag kör en update. DVS det skapas inget värde där när jag skapar order(som det gjorde för dig).
Jag funderar på ifall mina triggers från del1 kan strula till det?
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10729
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 12:52

wille83 skrev:Okej då äre det något annat som är fel. Såhär ser mina värden ut(länk till bild nedan):
https://ibb.co/8BzpxcX

Koden för insert serut såhär. Finns det ngt som kan vara fel där?
Kod: Markera allt
DROP PROCEDURE IF EXISTS create_order_id;
DELIMITER ;;
CREATE PROCEDURE create_order_id(
      a_k_id INT,
      a_fnamn VARCHAR(45),
      a_enamn VARCHAR(45),
      a_k_adress VARCHAR(45),
      a_o_antal_k INT,
      a_tot_pris INT,
      a_o_status VARCHAR(15)
)
BEGIN
    INSERT INTO order2kund VALUES (order_id, a_k_id, a_fnamn, a_enamn, order_datum, updated, deleted, a_o_antal_k, a_tot_pris, a_o_status);
END
;;

DELIMITER ;


Jag noterade även att updaterad kolumnen inte får något värde förrns jag kör en update. DVS det skapas inget värde där när jag skapar order(som det gjorde för dig).
Jag funderar på ifall mina triggers från del1 kan strula till det?


Okey.
Du gör det inom ramen för en procedur, det är relevant att veta.

När man felsöker vill man alltid begränsa, avgränsa - annars är det många saker som kan påverka.

Det är in INSERT-sats som är relevant, du bör lyfta ut den från den lagrade proceduren, om du inte ser vad felet är.
Kod: Markera allt
INSERT INTO order2kund VALUES (order_id, a_k_id, a_fnamn, a_enamn, order_datum, updated, deleted, a_o_antal_k, a_tot_pris, a_o_status);


Av någon anledning insertar du värden för:
Kod: Markera allt
order_id,
order_datum,
updated,
deleted,


De finns inte med som inkommande argument till din procedur så jag gissar att deras värden tas från tabellens nuvarande kolumn. Oavsett vad så ser det väldigt udda ut.

De skriver över dina DEFAULT värden för tidsstämplar på ett udda sätt.

Fältet order_id är AUTO_INCREMENT så borde troligen inte vara med i INSERT-satsen.

Dina tidsstämplar har DEFAULT-beteende och borde inte vara med i INSERT-satsen.
...
..:
.... /mos

wille83

css-hackare

  • Inlägg: 25
  • Blev medlem: 07 feb 2019, 23:03

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 17:04

mos skrev:
wille83 skrev:Okej då äre det något annat som är fel. Såhär ser mina värden ut(länk till bild nedan):
https://ibb.co/8BzpxcX

Koden för insert serut såhär. Finns det ngt som kan vara fel där?
Kod: Markera allt
DROP PROCEDURE IF EXISTS create_order_id;
DELIMITER ;;
CREATE PROCEDURE create_order_id(
      a_k_id INT,
      a_fnamn VARCHAR(45),
      a_enamn VARCHAR(45),
      a_k_adress VARCHAR(45),
      a_o_antal_k INT,
      a_tot_pris INT,
      a_o_status VARCHAR(15)
)
BEGIN
    INSERT INTO order2kund VALUES (order_id, a_k_id, a_fnamn, a_enamn, order_datum, updated, deleted, a_o_antal_k, a_tot_pris, a_o_status);
END
;;

DELIMITER ;


Jag noterade även att updaterad kolumnen inte får något värde förrns jag kör en update. DVS det skapas inget värde där när jag skapar order(som det gjorde för dig).
Jag funderar på ifall mina triggers från del1 kan strula till det?


Okey.
Du gör det inom ramen för en procedur, det är relevant att veta.

När man felsöker vill man alltid begränsa, avgränsa - annars är det många saker som kan påverka.

Det är in INSERT-sats som är relevant, du bör lyfta ut den från den lagrade proceduren, om du inte ser vad felet är.
Kod: Markera allt
INSERT INTO order2kund VALUES (order_id, a_k_id, a_fnamn, a_enamn, order_datum, updated, deleted, a_o_antal_k, a_tot_pris, a_o_status);


Av någon anledning insertar du värden för:
Kod: Markera allt
order_id,
order_datum,
updated,
deleted,


De finns inte med som inkommande argument till din procedur så jag gissar att deras värden tas från tabellens nuvarande kolumn. Oavsett vad så ser det väldigt udda ut.

De skriver över dina DEFAULT värden för tidsstämplar på ett udda sätt.

Fältet order_id är AUTO_INCREMENT så borde troligen inte vara med i INSERT-satsen.

Dina tidsstämplar har DEFAULT-beteende och borde inte vara med i INSERT-satsen.


Tar jag bort oder_datum osv så får jag "ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1"

Jag tror jag ser vad felet är nu iaf. Tack!

*Nu funkar det. Hela insert var lite galet skriver precis som du sa :)
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10729
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: datum 0000-000-000- osv

Inlägg19 mar 2019, 17:53

Gott! Det är ofta enklare att se såna saker när man "lyfter ut" konstruktionerna och tittar på dem en och en.
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 11 gäster