테이블 사킬라를 만들 수 없습니다."address" "외부 키 제약 조건이 잘못 형성되었습니다."
저는 mysql.com/doc/index-other.html 에서 sakila db를 설치하려고 하는데 sakila-installation.sql에서 먼저 스키마(/skila-dat.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. 내 DB는 Win64(AMD64)용 Ver 15.1 Distribute 10.1.39-MariaDB입니다.
가져올 때 phpmyadmin을 사용하는 경우 기타 옵션 섹션: 외부 키 검사 사용을 선택 취소합니다.이 옵션을 사용하도록 설정하면 테이블의 우선 순위가 고려되고 식별자가 다른 테이블의 외부 키인 테이블을 먼저 만들어야 하지만 sakila-schema.sql 파일에서는 이 우선 순위가 고려되지 않습니다.
sql 파일에서 phpmyadmin으로 잘라내어 붙여넣기 전에 nottepad++로 파일을 열고 notepad.exe와 같은 윈도우 소프트웨어를 사용하지 마십시오.
이것이 정확한 표현입니다.
테이블 만들기actor
(
actor_id
small intunsigned NULL AUTO_INCREMENT가 아님,
first_name
varchar(45) Null이 아님,
last_name
varchar(45) Null이 아님,
last_update
타임스탬프 NULL이 아닙니다. UPDATE CURRENT_TIMESTAMP의 DEFAULT CURRENT_TIMESTAMP,
기본 키(actor_id
),
열쇠idx_actor_last_name
(last_name
)
) 엔진=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8mb4;
언급URL : https://stackoverflow.com/questions/58382363/cant-create-table-sakila-address-foreign-key-constraint-is-incorrectly-for
'programing' 카테고리의 다른 글
jQueryUncaughtTypeError: 개체 [objectWindow]의 속성 '$'이(가) 함수가 아닙니다. (0) | 2023.08.21 |
---|---|
"error: option --single-version-external-managed not recognized"는 무엇을 의미합니까? (0) | 2023.08.21 |
phpMyadmin에서 외부 키 열에 대한 인덱스를 삭제할 수 있습니다. (0) | 2023.08.21 |
Symfony2 양식 입력에 클래스 속성을 설정하는 방법 (0) | 2023.08.21 |
어레이에 추가 j쿼리 (0) | 2023.08.21 |