Problem beim Erstellen von Tabellen

Asura

Benutzer
Beiträge
8
Guten Tag,
vorab gesagt: Ich bin absoluter Anfänger. Aber wie heißt es so schön: Jeder fängt mal klein an.
Nun, jetzt zu meinem Problem. Ich habe über PHPMyAdmin im Menü oder SQL einen Code geschrieben, der eig vorab nur die Struktur der ganzen Datenbank aufbauen soll. Leider scheitert es schon hier. Er zeig einen Fehler an aber ich kann diesen nicht identifizieren. Im Anhang habe ich mal den Code als Bild und die SQL Datei selber. Eventuell stimmt was nicht mit der Formatierung.

Code:
CREATE TABLE IF NOT EXISTS 'Leser'
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   NOT NULL,
      'Vorname'      VarChar(30)   NOT NULL,
      'Geburtsjahr'  Int(4)        NOT NULL,
      'Straße'         VarChar(30)   NOT NULL,
      'Hausnummer'      Int(3)        NOT NULL,
      'Postleitzahl' Int(6)        NOT NULL

);

CREATE TABLE IF NOT EXISTS 'Buch'
(

        'B_Sig'          VarChar(6)    NOT NULL,
      'Autor'          VarChar(20)   NOT NULL,
      'Titel'        VarChar(60)   NOT NULL,      
      'Jahr'         Int(4)        NOT NULL,
      'Fachbereich'  VarChar(40)   NOT NULL

);

CREATE TABLE IF NOT EXISTS 'Ausleihe'
(
 
      'L_ID'          Int(4)         NOT NULL,
      'B_Sig'          VarChar(6)     NOT NULL,
      'Ausleihdatum' Date           NOT NULL

);

ALTER TABLE 'Leser'
      ADD     PRIMARY KEY ('L_ID');  
     
ALTER TABLE 'Buch'
      ADD     PRIMARY KEY ('B_Sig');
     
ALTER TABLE 'Ausleihe'
      ADD     PRIMARY KEY ('L_ID'),
      ADD     PRIMARY KEY ('B_Sig');
     
ALTER TABLE 'Buch'
      MODIFY  'L_ID'   Int(4)   NOT NULL   AUTO_INCREMENT ;

Ich hoffe Sie können mir helfen.
 

Anhänge

  • Problem.png
    Problem.png
    342,1 KB · Aufrufe: 3
Werbung:
Und die eigentliche Fehlermeldung ist geheim?

Davon abgesehen kann eine Tabelle immer nur einen Primärschlüssel haben. D.h. folgendes wird nicht funktionieren...
Code:
ALTER TABLE 'Ausleihe'
      ADD     PRIMARY KEY ('L_ID'),
      ADD     PRIMARY KEY ('B_Sig');

Ich gehe jetzt einfach mal davon aus du willst einen zusammengesetzten Primärschlüssel aus beiden Spalten?
Code:
ALTER TABLE 'Ausleihe'
      ADD     PRIMARY KEY ('L_ID', 'B_Sig');

Weiterhin hat deine Tabelle "Buch" keine Spalte "L_ID"... Das hier kann also nicht funktionieren
Code:
ALTER TABLE 'Buch'
      MODIFY  'L_ID'   Int(4)   NOT NULL   AUTO_INCREMENT ;
 
Alles klar, die Fehler sind behoben. Aber der Fehler liegt kurz nach dem Erstellen der Leser Tabelle also hier der Auszug zur Fehlermeldung:

Code:
Error
SQL query:


CREATE TABLE IF NOT EXISTS 'Leser'
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   NOT NULL,
      'Vorname'      VarChar(30)   NOT NULL,
      'Geburtsjahr'  Int(4)        NOT NULL,
      'Straße'         VarChar(30)   NOT NULL,
      'Hausnummer'      Int(3)        NOT NULL,
      'Postleitzahl' Int(6)        NOT NULL

);
MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Leser'
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   N' at line 1
 
Code:
test=# create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'" at character 14
STATEMENT:  create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'"
LINE 1: create table 'Leser' ( id int);
  ^
test=*# create table "Leser" ( id int);
CREATE TABLE
test=*#

Deine Simulation einer DB sollte ähnlich reagieren.
 
So ich habe mal das Quoting geändert im Bezeichner nur hat das auch nicht funktioniert oder muss ich das auch bei den Attributen machen?

Code:
CREATE TABLE IF NOT EXISTS "Leser"
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   NOT NULL,
      'Vorname'      VarChar(30)   NOT NULL,
      'Geburtsjahr'  Int(4)        NOT NULL,
      'Straße'         VarChar(30)   NOT NULL,
      'Hausnummer'      Int(3)        NOT NULL,
      'Postleitzahl' Int(5)        NOT NULL

);

CREATE TABLE IF NOT EXISTS "Buch"
(

        'B_Sig'          VarChar(6)    NOT NULL,
      'Autor'          VarChar(20)   NOT NULL,
      'Titel'        VarChar(60)   NOT NULL,      
      'Jahr'         Int(4)        NOT NULL,
      'Fachbereich'  VarChar(40)   NOT NULL

);

CREATE TABLE IF NOT EXISTS "Ausleihe'"
(
 
      'L_ID'          Int(4)         NOT NULL,
      'B_Sig'          VarChar(6)     NOT NULL,
      'Ausleihdatum' Date           NOT NULL

);

ALTER TABLE "Leser"
      ADD     PRIMARY KEY ('L_ID');  
     
ALTER TABLE "Buch"
      ADD     PRIMARY KEY ('B_Sig');
     
ALTER TABLE "Ausleihe"
      ADD     PRIMARY KEY ('L_ID','B_Sig'),

     
ALTER TABLE "Leser"
      MODIFY  'L_ID'   Int(4)   NOT NULL   AUTO_INCREMENT ;

Fehlermeldung:

Code:
Error
SQL query:


CREATE TABLE IF NOT EXISTS "Leser"
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   NOT NULL,
      'Vorname'      VarChar(30)   NOT NULL,
      'Geburtsjahr'  Int(4)        NOT NULL,
      'Straße'         VarChar(30)   NOT NULL,
      'Hausnummer'      Int(3)        NOT NULL,
      'Postleitzahl' Int(5)        NOT NULL

);
MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Leser"
(
 
      'L_ID'          Int(4)        NOT NULL,
      'Name'          VarChar(30)   N' at line 1

Der Code:

Code:
test=# create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'" at character 14
STATEMENT:  create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'"
LINE 1: create table 'Leser' ( id int);
  ^
test=*# create table "Leser" ( id int);
CREATE TABLE
test=*#

Reagiert so:

Code:
Error
SQL query:


test=# create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'" at character 14
STATEMENT:  create table 'Leser' ( id int);
MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'test=# create table 'Leser' ( id int);
ERROR:  syntax error at or near "'Leser'' at line 1
 
Code:
postgres=# create table 'Leser' ( 'id' int);
ERROR:  syntax error at or near "'Leser'" at character 14
STATEMENT:  create table 'Leser' ( 'id' int);
ERROR:  syntax error at or near "'Leser'"
LINE 1: create table 'Leser' ( 'id' int);
  ^
postgres=# create table "Leser" ( 'id' int);
ERROR:  syntax error at or near "'id'" at character 24
STATEMENT:  create table "Leser" ( 'id' int);
ERROR:  syntax error at or near "'id'"
LINE 1: create table "Leser" ( 'id' int);
  ^
postgres=# create table "Leser" ( "id" int);
CREATE TABLE
postgres=#
 
Sollte ich der auch noch mal durch den Simulator jagen? Denn dann kommt das:

Code:
Error
SQL query:


postgres=# create table 'Leser' ( 'id' int);
ERROR:  syntax error at or near "'Leser'" at character 14
STATEMENT:  create table 'Leser' ( 'id' int);
MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'postgres=# create table 'Leser' ( 'id' int);
ERROR:  syntax error at or near "'' at line 1


Edit:Ahh ich verstehe jz, ich teste das jz gleich mal aus

Edit 2: Ich habe mal alles zu diesen Anführungszeichen geändert hat trotzdem nicht geklappt
 
Jetzt ist der Formatfehler weg aber nun ein neuer:

Code:
CREATE TABLE IF NOT EXISTS `Leser`
(

      `L_ID`          Int(4)        NOT NULL,
      `Name`          VarChar(30)   NOT NULL,
      `Vorname`      VarChar(30)   NOT NULL,
      `Geburtsjahr`  Int(4)        NOT NULL,
      `Straße`         VarChar(30)   NOT NULL,
      `Hausnummer`      Int(3)        NOT NULL,
      `Postleitzahl` Int(5)        NOT NULL

);

CREATE TABLE IF NOT EXISTS `Buch`
(

        `B_Sig`          VarChar(6)    NOT NULL,
      `Autor`          VarChar(20)   NOT NULL,
      `Titel`        VarChar(60)   NOT NULL,    
      `Jahr`         Int(4)        NOT NULL,
      `Fachbereich`  VarChar(40)   NOT NULL

);

CREATE TABLE IF NOT EXISTS `Ausleihe`
(

      `L_ID`          Int(4)         NOT NULL,
      `B_Sig`          VarChar(6)     NOT NULL,
      `Ausleihdatum` Date           NOT NULL

);

ALTER TABLE `Leser`
      ADD     PRIMARY KEY (`L_ID`);
   
ALTER TABLE `Buch`
      ADD     PRIMARY KEY (`B_Sig`);
   
ALTER TABLE `Ausleihe`
      ADD     PRIMARY KEY (`L_ID`,`B_Sig`),
      ADD KEY `L_ID` (`L_ID`),
      ADD KEY `B_Sig` (`B_Sig`);

   
ALTER TABLE `Leser`
      MODIFY  `L_ID`   Int(4)   NOT NULL   AUTO_INCREMENT ;

Code:
Error
SQL query:


ALTER TABLE `Leser`
      ADD     PRIMARY KEY (`L_ID`);
MySQL said: Documentation

#1068 - Multiple primary key defined

Also, wenn ich die Primary Key vergabe weglasse funktioniert es, aber wieso darf ich nicht zwei Primary Keys in unterschiedlichen Tabellen setzen?
 
Zuletzt bearbeitet:
Ich habe die gerade mal separat ausgeführt, also erst Tabellen erstellen lassen, dann die Änderungen über Alter Table. dann funktionierte es, wieso geht das nicht zusammen?
 
Werbung:
Zurück
Oben