Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我不断收到一个SQL语法错误,我不知道';我不知道为什么_Mysql_Sql_Foreign Keys_Syntax Error_Primary Key - Fatal编程技术网

Mysql 我不断收到一个SQL语法错误,我不知道';我不知道为什么

Mysql 我不断收到一个SQL语法错误,我不知道';我不知道为什么,mysql,sql,foreign-keys,syntax-error,primary-key,Mysql,Sql,Foreign Keys,Syntax Error,Primary Key,这是我的密码: CREATE TABLE Doctor ( ssn CHAR(11) PRIMARY KEY, name CHAR(30), specialty CHAR(30), yearsOfExperience INTEGER ); CREATE TABLE Pharmacy ( pharm_id CHAR(11) PRIMARY KEY, name CHAR(30), address CHAR(30), phone INT

这是我的密码:

CREATE TABLE Doctor (
    ssn CHAR(11) PRIMARY KEY,
    name CHAR(30),
    specialty CHAR(30),
    yearsOfExperience INTEGER
);

CREATE TABLE Pharmacy (
    pharm_id CHAR(11) PRIMARY KEY,
    name CHAR(30),
    address CHAR(30),
    phone INTEGER
);

CREATE TABLE Pharm_co (
    name CHAR(30) PRIMARY KEY,
    phone INTEGER
);

CREATE TABLE Pri_Phy_Patient (
    ssn CHAR(11) PRIMARY KEY,
    name CHAR(20),
    age INTEGER,
    address CHAR(20),
    phy_ssn CHAR(11),
    FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn)
);

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY,
    pharm_co_name CHAR(30) PRIMARY KEY,
    formula VARCHAR(100)
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name)
);

CREATE TABLE Prescription ( 
    pre_id NUMBER(10) PRIMARY KEY, 
    status CHAR(20), --  canceled/ready/pending/completed 
    drop_off_time TIMESTAMP, 
    pick_up_time TIMESTAMP, 
    ssn CHAR(11),  -- patient’s ssn
    phy_ssn CHAR(11),
    pre_date CHAR(11),
    quantity INTEGER,
    trade_name CHAR(20),
    name CHAR(11),
    pharm_co_name CHAR(30),
    FOREIGN KEY (ssn) REFERENCES Pri_Phy_Patient(ssn),
    FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn),
    FOREIGN KEY (trade_name) REFERENCES Make_Drug(trade_name),
    FOREIGN KEY (pharm_co_name) REFERENCES Make_Drug(pharm_co_name)
);

CREATE TABLE Contract (
    pharm_id CHAR(11) PRIMARY KEY,
    start_date CHAR(11),
    end_date CHAR(11),
    text VARCHAR(4000),
    supervisor CHAR(20),
    pharm_co_name CHAR(30) PRIMARY KEY,,
    FOREIGN KEY (pharm_id) REFERENCES Pharmacy(pharm_id),
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name)
);
每当我尝试构建架构时:

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 'FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name))' at line 5

我不知道为什么它总是给我语法错误。我很确定这是外键的正确语法。我应该如何解决该问题?我试着换东西,但似乎没法用。

你漏掉了一个逗号。使其正确为-

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY,
    pharm_co_name CHAR(30) PRIMARY KEY,
    formula VARCHAR(100), <-- add this comma
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name)
);
创建表格制作药物(
商品名称字符(20)主键,
pharm_co_名称字符(30)主键,
公式VARCHAR(100),在本声明中:

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY,
    pharm_co_name CHAR(30) PRIMARY KEY,
    formula VARCHAR(100) <-- missing comma
   FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name)
);
创建表格制作药物(
商品名称字符(20)主键,
pharm_co_名称字符(30)主键,

formula VARCHAR(100)不能将两列声明为主键,内联。请尝试以下操作:

CREATE TABLE Make_Drug (
    trade_name CHAR(20),
    pharm_co_name CHAR(30),
    formula VARCHAR(100),
    PRIMARY KEY (trade_name, pharm_co_name),
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name)
);

这还可以修复缺少的逗号。

检查逗号(
)。在外键(pharm co\u name)之前缺少逗号,请添加与dbmsun相关的标记,但是:
char(..)
几乎总是一个错误的选择。pharm\u co\u name char(30)主键,=>pharm co\u name char(30)主键,我没有意识到我不能内联声明两个主键。谢谢!@doy…一个表只能有一个主键。你似乎想要一个复合主键。