【发布时间】:2018-06-17 19:40:14
【问题描述】:
主机:000webhost.com
PHP:7.1.11
innodb_version 5.6.36-82.2 版本 10.1.29-MariaDB version_comment MariaDB 服务器 version_compile_os Linux
PHPMyAdmin 4.76
嗨,
我在拥有上述所有软件的免费虚拟主机上设置了一个帐户。我正在尝试学习 PHP 和 MySQL。为此,我正在尝试安装著名的 Sakila 数据库。
我在通过 phpMyAdmin 导入数据库时遇到问题。
当我上传 sakila-schema.sql 时,创建地址表失败:
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;
我收到这条我不明白的错误消息:
Error
SQL query:
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
MySQL said: Documentation
#1005 - Can't create table `id4176233_sakiladb`.`address` (errno: 150 "Foreign key constraint is incorrectly formed") (Details…)
我没有把它放在那里。 Sakila 数据库是一个旧的示例数据库,用于帮助人们学习(或者在我的情况下重新学习)SQL。我下载了带有 schema.sql(该语句来自哪里)和 data.sql 的数据库
点击“详细信息”无济于事
任何帮助理解此消息以及如何解决问题将不胜感激。
【问题讨论】:
-
运行导入后,您应该能够在以下输出中找到更好的错误消息:“show engine innodb status;”
-
Sakila 数据库相当特定于特定的 MySQL 版本,因为它们在 MySQL 中可用时向 Sakila 添加了新功能。您下载的版本可能与您正在运行的 MariaDB 版本不兼容。乍一看,您应该使用为 MySQL 5.7 设计的 Saikila;是你下载的那个吗?
-
这是一条有用的信息。很抱歉很久才回复你。这是业余时间学习的事情,工作分心。我会检查数据库和Saikila版本。
标签: import phpmyadmin mariadb