我想创建一个小型数据库,但每次都收到错误:

下面是MySQL代码:

DROP TABLE IF EXISTS `orders`;

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer` varchar(25) NOT NULL DEFAULT '',
  `address1` varchar(100) DEFAULT NULL,
  `city` varchar(25) NOT NULL DEFAULT '',
  `postcode` varchar(25) NOT NULL DEFAULT '',
  `country` varchar(25) NOT NULL DEFAULT '',
  `amount` varchar(11) NOT NULL DEFAULT '',
  `status` varchar(10) NOT NULL DEFAULT '',
  `deleted` varchar(10) NOT NULL DEFAULT '',
  `date` datetime NOT NULL,
  `last_modified` datetime DEFAULT NULL,
  `customers_id` int(11) NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT orders_customers_id_fk FOREIGN KEY (customers_id) 
     REFERENCES customers (id)  ON DELETE SET NULL);
  
LOCK TABLES `orders` WRITE;
/*!40000 ALTER TABLE `orders` DISABLE KEYS */;


/*!40000 ALTER TABLE `orders` ENABLE KEYS */;
UNLOCK TABLES;


# Dump of table customers
# ------------------------------------------------------------

DROP TABLE IF EXISTS `customers`;

CREATE TABLE `customers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role` varchar(25) NOT NULL DEFAULT '',
  `name` varchar(50) NOT NULL DEFAULT '',
  `surname` varchar(50) NOT NULL DEFAULT '',
  `email` varchar(50) NOT NULL DEFAULT '',
  `password` char(255) NOT NULL DEFAULT '',
  `created_at` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我try 了外键代码的语法,但仍然有相同的错误,我不知道为什么?

我得到了这个错误:

#1005 - Can't create table `management`.`orders` (errno: 150 "Foreign key constraint is incorrectly formed")

推荐答案

若要声明外键约束,定义此键的表必须已经存在.

在本例中,您试图链接到一个不存在的表,因此需要相应地对这CREATE TABLE条语句重新排序.

Mysql相关问答推荐

使用由其中一个表的列规定的条件连接两个表

使用触发器markdown 10%

为什么Mysql会根据查询参数改变查询执行计划?

如何分解分组依据的数据?

带有 JOIN 和 WHERE 子句的 INSERT 语句

Mysql时间序列数据的最小值和最大值

有没有比使用 MySQL 计划事件更好的方法来更新我的数据库表中的列?

如何根据 R 中的价格范围将数据从一列复制到新列?

带有 PARTITION BY 子句的 ROW_NUMBER() 停止在 MariaDB 上工作

使用 DISTINCT 时无法从数据库中查询所有数据

mysql 5.5;可以从记录中排除表吗?

如何根据特定条件从mysql数据库中 Select 查询

为什么 ORDER BY 'id' 'desc' 不返回语法错误?

结果差异(MySQL 5.7 vs MySQL 8.0)

MySQL:如何多次加入同一张表?

从终端访问 MAMP 的 MySQL

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

在连接条件上使用 IS NULL 或 IS NOT NULL - 理论问题

如何在 MySQL 中删除此索引?

int(11) 和 int(11) UNSIGNED 有什么区别?