Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Problem beim Erstellen von Tabellen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Asura, 21 Oktober 2015.

  1. Asura

    Asura Benutzer

    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:

  2. Distrilec

    Distrilec Datenbank-Guru

    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 ;
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Murks. '01069', Dresden.
     
  4. Asura

    Asura Benutzer

    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 
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Falsches Quoting beim Bezeichner.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  7. Asura

    Asura Benutzer

    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 
     
  8. akretschmer

    akretschmer Datenbank-Guru

    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=#
    
     
  9. Asura

    Asura Benutzer

    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
     
  10. Asura

    Asura Benutzer

    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: 21 Oktober 2015
  11. Asura

    Asura Benutzer

    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?
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Wenn Du mit MySQL arbeiten willst solltest Du Dir recht schnell abgewöhnen, die Bugs und Fehler verstehen zu wollen. Leb einfach damit.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden