无法创建表sakila`.address地址“外键约束格式不正确”

时间:2019-10-14 18:37:01

标签: mysql mariadb

我正在尝试从mysql.com/doc/index-other.html安装sakila db,并按照sakila-installation.html上的说明进行操作,其中说先运行架构(/sakila-schema.sql),然后运行sakila-data.sql来插入数据。但是,当我由db引擎运行架构时,它将终止执行并显示以下错误:

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

以下是创建表的模式脚本的前几行:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS sisterst_sakila;
CREATE SCHEMA sisterst_sakila;
USE sisterst_sakila;
CREATE TABLE actor (
  actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  first_name VARCHAR(45) NOT NULL,
  last_name VARCHAR(45) NOT NULL,
  last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (actor_id),
  KEY idx_actor_last_name (last_name)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `address`
--

CREATE TABLE address (
  address_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  address VARCHAR(50) NOT NULL,
  address2 VARCHAR(50) DEFAULT NULL,
  district VARCHAR(20) NOT NULL,
  city_id SMALLINT UNSIGNED NOT NULL,
  postal_code VARCHAR(10) DEFAULT NULL,
  phone VARCHAR(20) NOT NULL,
  /*!50705 location GEOMETRY NOT NULL,*/
  last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (address_id),
  KEY idx_fk_city_id (city_id),
  /*!50705 SPATIAL KEY `idx_location` (location),*/
  CONSTRAINT `fk_address_city` FOREIGN KEY (city_id) REFERENCES city (city_id) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

我没有对db脚本进行任何更改,这可能是什么问题?

PS。我的数据库版本是用于Win64(AMD64)的Ver 15.1 Distrib 10.1.39-MariaDB。

enter image description here

2 个答案:

答案 0 :(得分:0)

在从sql文件剪切并粘贴到phpmyadmin中之前,请确保使用noptepad ++而不是Windows软件(如notepad.exe)打开文件

答案 1 :(得分:0)

如果您在导入时使用 phpmyadmin,请在其他选项部分: 取消勾选启用外键检查。 因为如果开启这个选项,会考虑表的优先级,必须先创建其他表中标识符为外键的表,但是sakila-schema.sql文件中不考虑这个优先级。