MySQL外键约束错误-无法添加外键约束-错误1822

时间:2019-10-13 07:16:44

标签: mysql

任何帮助将不胜感激。

我有两个表“ Employee”和“ EventPlan”。 对于创建表EventPlan表,当我尝试创建表时,它在MySQL工作台中给我一个错误:

  

错误1822-无法添加外键约束。缺少索引   引用表“ employee”中的约束“ EmpNo”。

您将在两个表中看到“ EmpNo”。但是我看不到我在做什么错。请参见下面的代码。

我无法在My SQL工作台中执行或创建“ EventPlan”。

我已经检查了两个表,也使该列变得唯一,但是找不到问题。

活动计划表

CREATE TABLE Employee
(EmpNo VARCHAR(200) UNIQUE NOT NULL,
EmpName VARCHAR(200) NOT NULL,
Department VARCHAR(50) NOT NULL,
Email VARCHAR(20) NOT NULL,
Phone VARCHAR(20) NOT NULL,
CONSTRAINT PKEmployee PRIMARY KEY(EmpNo)
); 

员工表

    #include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
int countLines(char name[]);
int main()
{
    struct dirent *de;
    DIR *dr=opendir(".");
    char check[16]=".nkt";
    int i;
    char name[64];
    int count=0;

    if(dr==NULL)
    {
        printf("Didn't open!");
        return 0;
    }

    while((de=readdir(dr))!=NULL)
    {
        if((strstr(de->d_name, check))!=NULL)
        {
            strcpy(name, de->d_name);
            countLines(name);
        }
    }

    closedir(dr);

    return 0;
}

int countLines(char name[])
{
    FILE *fp;
    fp=fopen(name,"r");
    char ch;
    int lines=0;
    while(!feof(fp))
    {
        ch=fgetc(fp);
        if(ch=='\n')
        {
            lines++;
        }
    }

    fclose(fp);

    printf("%d\n", lines);
}

1 个答案:

答案 0 :(得分:0)

您的代码可以正常工作

MariaDB [test]> drop table if exists employee;
Query OK, 0 rows affected (0.04 sec)

MariaDB [test]> CREATE TABLE Employee
    -> (EmpNo VARCHAR(200) UNIQUE NOT NULL,
    -> EmpName VARCHAR(200) NOT NULL,
    -> Department VARCHAR(50) NOT NULL,
    -> Email VARCHAR(20) NOT NULL,
    -> Phone VARCHAR(20) NOT NULL,
    -> CONSTRAINT PKEmployee PRIMARY KEY(EmpNo)
    -> );
Query OK, 0 rows affected (0.09 sec)

MariaDB [test]> CREATE TABLE Eventplan
    -> ( PlanNo VARCHAR(8) NOT NULL,
    -> EventNo VARCHAR(8) UNIQUE NOT NULL,
    -> Workdate DATE,
    -> Notes VARCHAR(8),
    -> EmpNo VARCHAR(8) ,
    -> CONSTRAINT PK_PlanNo PRIMARY KEY(PlanNo),
    -> #CONSTRAINT EventNo FOREIGN KEY (EventNo)
    -> #REFERENCES Eventrequest(EventNo),
    -> CONSTRAINT EmpNo FOREIGN KEY (EmpNo)
    -> REFERENCES Employee(EmpNo)
    -> );
Query OK, 0 rows affected (0.13 sec)

MariaDB [test]> select table_name from information_schema.tables where table_name in('employee','eventplan') and table_schema = 'test';
+------------+
| table_name |
+------------+
| employee   |
| eventplan  |
+------------+
2 rows in set (0.02 sec)

如果您仍然有错误,那就不是这里了。