MySQL unter phpMyAdmin richtig vorbereiten?
Hallo,
ich möchte eine MySQL Datenbank nach diesem Schema aufbauen:
ID (auto increment, aber Zahlen manuell änderbar)
Aufgabe (Name der Aufgabe; (varchar(25))
Deadline (Bis wann muss die Aufabe erledigt sein? (datetime))
Status (Erledigt oder offen / 0/1)
wannErledigt (Anfangs kein/leerer Wert, _nachdem_ Status von 0 auf 1 gesetzt wurde, soll hier der zugehörige Zeitpunkt stehen)
CREATE TABLE `tasks`.`bathroom` ( `id` INT(100) BINARY NOT NULL AUTO_INCREMENT COMMENT 'bathroom_id' , `task` VARCHAR(25) NOT NULL COMMENT 'bathroom_task' ,
`deadline` DATETIME NOT NULL COMMENT 'bathroom_deadline' , `status` INT(2) NOT NULL COMMENT 'bathroom_status(0=todo,1=done)' , `done` DATETIME on update
CURRENT_TIMESTAMP NOT NULL COMMENT 'bathroom_done' ) ENGINE = InnoDB;
funktioniert nicht.
Ich habe nicht viel Ahnung mit MySQL Befehlen an sich (weshalb ich auch phpMyAdmin zum Datenbankaufbau nutze!) und weiß nicht, wo der Fehler liegt.
Könnt Ihr mir weiterhelfen?
Danke & LG
ich möchte eine MySQL Datenbank nach diesem Schema aufbauen:
ID (auto increment, aber Zahlen manuell änderbar)
Aufgabe (Name der Aufgabe; (varchar(25))
Deadline (Bis wann muss die Aufabe erledigt sein? (datetime))
Status (Erledigt oder offen / 0/1)
wannErledigt (Anfangs kein/leerer Wert, _nachdem_ Status von 0 auf 1 gesetzt wurde, soll hier der zugehörige Zeitpunkt stehen)
CREATE TABLE `tasks`.`bathroom` ( `id` INT(100) BINARY NOT NULL AUTO_INCREMENT COMMENT 'bathroom_id' , `task` VARCHAR(25) NOT NULL COMMENT 'bathroom_task' ,
`deadline` DATETIME NOT NULL COMMENT 'bathroom_deadline' , `status` INT(2) NOT NULL COMMENT 'bathroom_status(0=todo,1=done)' , `done` DATETIME on update
CURRENT_TIMESTAMP NOT NULL COMMENT 'bathroom_done' ) ENGINE = InnoDB;
funktioniert nicht.
Ich habe nicht viel Ahnung mit MySQL Befehlen an sich (weshalb ich auch phpMyAdmin zum Datenbankaufbau nutze!) und weiß nicht, wo der Fehler liegt.
Könnt Ihr mir weiterhelfen?
Danke & LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 277542
Url: https://administrator.de/contentid/277542
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
9 Kommentare
Neuester Kommentar
Moin carl7n,
schneller würde es in der Tat gehen, wenn du die Fehlermeldung/den SQL-Errorcode posten würdest.
Dann könnten wir auch einen nutznutzigen Praktikanten oder Teamleiter mit einer Suchmaschinen-Recherche losjagen.
Anyway...
Zumindest 2 mögliche Klemmer sprangen mir ins Auge:
b) das "NOT NULL" gehört eigentlich vor die "ON UPDATE"-Klausel
c) das Feld ist NOT NULL, hat aber keinen Default (bzw. nur beim UPDATE-Fall)
Also wäre dann (da ein leeres Feld ausgeschlossen ist) das für deine Zwecke passendste entweder
.
.
Im ganzen Satz also die Anpassungen:
Grüße
Biber
schneller würde es in der Tat gehen, wenn du die Fehlermeldung/den SQL-Errorcode posten würdest.
Dann könnten wir auch einen nutznutzigen Praktikanten oder Teamleiter mit einer Suchmaschinen-Recherche losjagen.
Anyway...
CREATE TABLE `tasks`.`bathroom`
( `id` INT(100) BINARY NOT NULL AUTO_INCREMENT -COMMENT 'bathroom_id'
, `task` VARCHAR(25) NOT NULL COMMENT 'bathroom_task'
, `deadline` DATETIME NOT NULL COMMENT 'bathroom_deadline'
, `status` INT(2) NOT NULL COMMENT 'bathroom_status(0=todo,1=done)'
, `done` DATETIME on update CURRENT_TIMESTAMP NOT NULL COMMENT 'bathroom_done'
) ENGINE = InnoDB;
- die Definition von id INT(100) ist Bullshit - wieso soll denn ein Integer in der Breite 100 Ziffern angezeigt werden?
- die Definition von "done" ist mehrfach fragwürdig.
b) das "NOT NULL" gehört eigentlich vor die "ON UPDATE"-Klausel
c) das Feld ist NOT NULL, hat aber keinen Default (bzw. nur beim UPDATE-Fall)
Also wäre dann (da ein leeres Feld ausgeschlossen ist) das für deine Zwecke passendste entweder
.
, ...done timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP
-oder-.
, ...done timestamp ON UPDATE CURRENT_TIMESTAMP
// also NULLS ALLOWEDIm ganzen Satz also die Anpassungen:
CREATE TABLE tasks.bathroom
( id INT NOT NULL AUTO_INCREMENT -COMMENT 'bathroom_id'
, task VARCHAR(25) NOT NULL COMMENT 'bathroom_task'
, deadline DATETIME NOT NULL COMMENT 'bathroom_deadline'
, status INT(2) NOT NULL COMMENT 'bathroom_status(0=todo,1=done)'
, done TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT 'bathroom_done'
) ENGINE = InnoDB;
Grüße
Biber
na okay, den kleinen Fehler bekommen wir schnell weg mit einer Zusatzzeile.
Grüße
Biber
CREATE TABLE tasks.bathroom
( id INT NOT NULL AUTO_INCREMENT COMMENT 'bathroom_id'
, task VARCHAR(25) NOT NULL COMMENT 'bathroom_task'
, deadline DATETIME NOT NULL COMMENT 'bathroom_deadline'
, status INT(2) NOT NULL COMMENT 'bathroom_status(0=todo,1=done)'
, done TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT 'bathroom_done'
, PRIMARY KEY (ID)
) ENGINE = InnoDB
Grüße
Biber
Moin carln7n,
it depends...
Dazu müssten wir wissen, was du da überhaupt zusammenschroten willst.
Oder - im IT-Slang ausgedrückt, die Anforderungen müssen definiert sein.
Wenn das Ganze so ein Putzplan für eure WG werden soll, weil da irgendein Frischling direkt von Mami zu euch gezogen ist und ohne klare Strukturen nicht klar kommt, dann...
Grüße
Biber
it depends...
Dazu müssten wir wissen, was du da überhaupt zusammenschroten willst.
Oder - im IT-Slang ausgedrückt, die Anforderungen müssen definiert sein.
Wenn das Ganze so ein Putzplan für eure WG werden soll, weil da irgendein Frischling direkt von Mami zu euch gezogen ist und ohne klare Strukturen nicht klar kommt, dann...
- Würde ich einmalig mit einem INSERT-Statement die Datensätze für die nächsten 2 Monate anlegen (die Termine lassen sich berechnen, Status- und Done-Werte sind bekannt.
- und ich würde überlegen, ob denn die Uhrzeit der Erledigung wichtig ist oder das Datum ausreicht also bei DONE doch DATETIME wie in deinem ersten Ansatz.
- und überlegen, ob es flexibler wird, wenn zusätzlich zu dem definierten "Task" noch ein "Name" zugeordnet werden soll - also der, der es tun soll bzw. der, der es auf "done" gesetzt hat. Denn im Moment ist es ja nur auswertbar, wann welche Tasks in welchem Status sind, aber nicht, wen man deshalb verhauen soll.
Grüße
Biber
Moin carl7n,
na, dann will ich dir den Spass am Ausprobieren und Verfeinern nicht nehmen - es heisst ja Entwicklung und nicht Standardlösungen kopieren.
Nur drei Anmerkungen:
Grüße
Biber
na, dann will ich dir den Spass am Ausprobieren und Verfeinern nicht nehmen - es heisst ja Entwicklung und nicht Standardlösungen kopieren.
Nur drei Anmerkungen:
- ich würde die "in der Zukunft liegenden Aufgaben" nach wie vor per INSERT-Statements anlegen für einen realistischen Zeitraum (=NICHT für 10 Jahre im Voraus). Auch wenn vermeintlich diese "Gesetzmäßigkeiten" mit geraden/ungeraden Wochen oder "jeden dritten Dienstag im Monat" in der Theorie irgendwie bestechend einleuchtend sind- hey, schau doch mal nach 2 Monaten, ob das so passt im wirklichen Leben
- wenn du jemand eine Mail, eine SMS, whatever senden willst, dann muss schon a) ein Task einer Person/einer Gruppe zugeordnet sein und b) diese Person/diese Gruppe auch ein paar Attribute haben (Name, Mail-Adresse, TelNr,..)
- jeweils eine eigene Tabelle für den Task "Klo-Putzen", "Kühlschrank abtauen", "Aschenbecher kärchern" etc. ist absurd. Das sind alles "Aufgaben" und haben keine signifikant unterschiedlichen Attribute.
Grüße
Biber