我正在尝试从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。
答案 0 :(得分:0)
在从sql文件剪切并粘贴到phpmyadmin中之前,请确保使用noptepad ++而不是Windows软件(如notepad.exe)打开文件
答案 1 :(得分:0)
如果您在导入时使用 phpmyadmin,请在其他选项部分: 取消勾选启用外键检查。 因为如果开启这个选项,会考虑表的优先级,必须先创建其他表中标识符为外键的表,但是sakila-schema.sql文件中不考虑这个优先级。>