2016-04-04 13 views
0

Ich verstehe, dass diese Frage mehrmals gestellt wurde, aber ich bin ein großer Anfänger, ich übertrage die Datenbank von SQL Workbench nach phpmyadmin. Ich erhalte diese Fehlermeldung:Debuggen des MySQL-Fehlers "# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax"

SQL-Abfrage:

CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`staff` (
    `StaffID` TEXT(6) NOT NULL, 
    `Name` VARCHAR(45) NULL, 
    `Email` VARCHAR(254) NULL, 
    `Password` VARCHAR(45) NULL, 
    PRIMARY KEY (`StaffID`), 
    CONSTRAINT `StaffID` 
    FOREIGN KEY() 
    REFERENCES `ApplicationSystem`.`UserType`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 
MySQL said: Documentation 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') 
    REFERENCES `ApplicationSystem`.`UserType`() 
    ON DELETE NO ACTION 
    ' at line 8 

hier ist die eigentliche SQL-Code:

-- MySQL Script generated by MySQL Workbench 
-- 04/04/16 23:56:12 
-- Model: New Model Version: 1.0 
-- MySQL Workbench Forward Engineering 

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 

-- ----------------------------------------------------- 
-- Schema ApplicationSystem 
-- ----------------------------------------------------- 

-- ----------------------------------------------------- 
-- Schema ApplicationSystem 
-- ----------------------------------------------------- 
CREATE SCHEMA IF NOT EXISTS `ApplicationSystem` DEFAULT CHARACTER SET utf8 ; 
USE `ApplicationSystem` ; 

-- ----------------------------------------------------- 
-- Table `ApplicationSystem`.`staff` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`staff` (
    `StaffID` TEXT(6) NOT NULL, 
    `Name` VARCHAR(45) NULL, 
    `Email` VARCHAR(254) NULL, 
    `Password` VARCHAR(45) NULL, 
    PRIMARY KEY (`StaffID`), 
    CONSTRAINT `StaffID` 
    FOREIGN KEY() 
    REFERENCES `ApplicationSystem`.`UserType`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `ApplicationSystem`.`UserType` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`UserType` (
    `Type` ENUM('A', 'HA', 'AT') NULL, 
    `ID` TEXT(6) NOT NULL, 
    INDEX `ID_idx` (`ID` ASC), 
    PRIMARY KEY (`ID`), 
    UNIQUE INDEX `ID_UNIQUE` (`ID` ASC), 
    CONSTRAINT `ID` 
    FOREIGN KEY (`ID`) 
    REFERENCES `ApplicationSystem`.`Applicants` (`ApplicantID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `ID` 
    FOREIGN KEY (`ID`) 
    REFERENCES `ApplicationSystem`.`staff` (`StaffID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `ApplicationSystem`.`Applicants` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`Applicants` (
    `ApplicantID` TEXT(6) NULL, 
    `Firstname` VARCHAR(40) NULL, 
    `surname` VARCHAR(40) NULL, 
    `DOB` DATE NULL, 
    `Gender` ENUM('yes', 'no') NULL, 
    `Address` VARCHAR(45) NULL, 
    `Postcode` VARCHAR(9) NULL, 
    `ApplicantMobile` TEXT(11) NULL, 
    `ApplicantHome` TEXT(11) NULL, 
    `ApplicantEmail` VARCHAR(255) NULL, 
    `ParentName` VARCHAR(40) NULL, 
    `Relationtoapplicant` VARCHAR(15) NULL, 
    `ParentEmail` VARCHAR(255) NULL, 
    `ParentAddress` VARCHAR(40) NULL, 
    `ParentPostcode` VARCHAR(9) NULL, 
    `ParentHome` TEXT(11) NULL, 
    `ParentMobile` TEXT(11) NULL, 
    `Currentschool` VARCHAR(40) NULL, 
    `ApplicantInYr11` ENUM('yes', 'no') NULL, 
    `Sibbling` ENUM('yes', 'no') NULL, 
    `SibblingName` VARCHAR(40) NULL, 
    `SibblingYear` TEXT(2) NULL, 
    `MedicalConditions` VARCHAR(30) NULL, 
    `AccessArrangementsAvailable` ENUM('yes', 'no') NULL, 
    `AccessArrangments` VARCHAR(20) NULL, 
    `Ethnic` VARCHAR(40) NULL, 
    `FirstLanguage` VARCHAR(15) NULL, 
    `HomeLanguage` VARCHAR(15) NULL, 
    `Religion` VARCHAR(15) NULL, 
    `Nationality` VARCHAR(20) NULL, 
    `ArmedForces` ENUM('yes', 'no') NULL, 
    `PreviouslyLookedAfter` ENUM('yes', 'no') NULL, 
    `EUResident` ENUM('yes', 'no') NULL, 
    `RestrictionResidence` ENUM('yes', 'no') NULL, 
    `school1` VARCHAR(45) NULL, 
    `school2` VARCHAR(45) NULL, 
    `school3` VARCHAR(45) NULL, 
    `school4` VARCHAR(45) NULL, 
    `UPN` TEXT(13) NULL, 
    `UCL` TEXT(13) NULL, 
    `ULN` TEXT(10) NULL, 
    `Password` VARCHAR(40) NULL, 
    `Course1` VARCHAR(30) NULL, 
    `Course2` VARCHAR(30) NULL, 
    `Course3` VARCHAR(30) NULL, 
    `Course4` VARCHAR(30) NULL, 
    `Course5` VARCHAR(30) NULL, 
    `Complete` TINYINT(1) NULL, 
    `Outcome` ENUM('R', 'A') NULL, 
    PRIMARY KEY (`ApplicantID`), 
    UNIQUE INDEX `idtable1_UNIQUE` (`ApplicantID` ASC), 
    UNIQUE INDEX `ApplicantEmail_UNIQUE` (`ApplicantEmail` ASC), 
    CONSTRAINT `ApplicantID` 
    FOREIGN KEY() 
    REFERENCES `ApplicationSystem`.`UserType`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `ApplicationSystem`.`table1` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`table1` (
    `ID` TEXT(6) NOT NULL, 
    `outcome` TEXT(6) NULL, 
    PRIMARY KEY (`ID`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `ApplicationSystem`.`outcome` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`outcome` (
    `ID` TEXT(6) NOT NULL, 
    `Outcome` ENUM('R', 'A') NULL, 
    PRIMARY KEY (`ID`), 
    CONSTRAINT `ID` 
    FOREIGN KEY (`ID`) 
    REFERENCES `ApplicationSystem`.`Applicants` (`ApplicantID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

USE `ApplicationSystem` ; 

-- ----------------------------------------------------- 
-- Placeholder table for view `ApplicationSystem`.`view1` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `ApplicationSystem`.`view1` (`id` INT); 

-- ----------------------------------------------------- 
-- View `ApplicationSystem`.`view1` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `ApplicationSystem`.`view1`; 
USE `ApplicationSystem`; 


SET [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS 
+0

weder mysql workbench noch phpmyadmin sind Datenbanken-Engine und als solche sollten Sie nicht die Datenbank überall übertragen müssen, nur die Verbindungen neu erstellen. – Sebas

+0

auf einem anderen Hinweis, sieht dies wie ein sehr einfaches Syntaxproblem, leicht lösbar durch einen Blick durch http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html – Sebas

+0

Pro-Tipp: Benutzer, die einen Benutzernamen von 'srhgrsdhfdh' festgelegt haben, scheinen die Tastatur geknallt zu haben, um schnelle Hilfe zu erhalten, und es wird allgemein angenommen, dass sie nicht Mitglieder der Community sein wollen. Dies kann sich auf die Art der Hilfe auswirken, die Sie erhalten. Vergessen Sie nicht, auch das Hilfe-Center zu lesen, insbesondere, welche Arten von Fragen hier am besten funktionieren. Vielen Dank! – halfer

Antwort

0
CONSTRAINT `StaffID` 
    FOREIGN KEY() 
    REFERENCES `ApplicationSystem`.`UserType`() 

einen Fremdschlüssel zu deklarieren, müssen Sie Geben Sie die spezifischen Spalten an, die an der Einschränkung teilnehmen. Du hast das hier nicht getan. Die korrekte Syntax ist

CONSTRAINT `StaffID` 
    FOREIGN KEY (<name of a column in this table>) 
    REFERENCES `ApplicationSystem`.`UserType` (<name of the matching column in the referenced table>) 

Füllung im <placeholders> mit den richtigen tatsächlichen Spaltennamen.

Sebas hat einen guten Punkt, obwohl; die Daten sind weder in Workbench noch in phpMyAdmin "in"; Dies sind nur Verwaltungsclients, die eine Verbindung zum Datenbankprozess herstellen. Sie sollten daher nur eine neue Verbindung zur vorhandenen Datenbank einrichten können.

+0

Dank Bruder. Ich bin unglaublich dankbar. Es stellte sich heraus, dass bei der Erstellung der visuellen Datenbank versehentlich zwei Links für beide Tabellen erstellt wurden. – srhgrsdhfdh

0
FOREIGN KEY (`here shoud be the column name the key belongs to`) 
+0

Danke, Bruder. Ich bin unglaublich dankbar. Es stellte sich heraus, dass bei der Erstellung der visuellen Datenbank versehentlich zwei Links für beide Tabellen erstellt wurden. – srhgrsdhfdh