반응형
MySQL에서 MariaDB로 이동 - 외부 키 제약 조건이 잘못 형성되었습니다.
방금 XAMPP를 사용하는 로컬 개발 환경을 업데이트했는데, XAMPP의 새 버전은 MariaDB를 사용하는 반면, 이전 버전은 MySQL을 사용하는데, 저는 괜찮습니다.
MariaDB는 기본적으로 "드롭인" 대체 기능이기 때문에 MySQL과 완전히 호환된다고 생각했는데 업그레이드 전에 MySQL에서 직접 내보낸 데이터베이스를 가져오는 데 문제가 있었습니다.
다음의 에러가 표시됩니다.
Query:
/*Table structure for table `blm_wc_download_log` */
CREATE TABLE `blm_wc_download_log` (
`download_log_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`timestamp` datetime NOT NULL,
`permission_id` bigint(20) unsigned NOT NULL,
`user_id` bigint(20) unsigned DEFAULT NULL,
`user_ip_address` varchar(100) COLLATE utf8mb4_unicode_520_ci DEFAULT '',
PRIMARY KEY (`download_log_id`),
KEY `permission_id` (`permission_id`),
KEY `timestamp` (`timestamp`),
CONSTRAINT `fk_blm_wc_download_log_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `blm_woocommerce_downloadable_product_permissions` (`permission_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
Error occured at:2019-02-26 05:30:20
Line no.:9919
Error Code: 1005 - Can't create table `my-db`.`blm_wc_download_log` (errno: 150 "Foreign key constraint is incorrectly formed")
여기 있습니다blm_woocommerce_downloadable_product_permissions
:
CREATE TABLE `blm_woocommerce_downloadable_product_permissions` (
`permission_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`download_id` varchar(36) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`product_id` bigint(20) unsigned NOT NULL,
`order_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`order_key` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`user_email` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`user_id` bigint(20) unsigned DEFAULT NULL,
`downloads_remaining` varchar(9) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`access_granted` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`access_expires` datetime DEFAULT NULL,
`download_count` bigint(20) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`permission_id`),
KEY `download_order_key_product` (`product_id`,`order_id`,`order_key`(16),`download_id`),
KEY `download_order_product` (`download_id`,`order_id`,`product_id`),
KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
그래서일까?blm_woocommerce_downloadable_product_permissions
테이블이 존재하지 않는다고 생각하기 때문에 에러가 발생한 파일 아래쪽에 작성되어 있습니까?단, 지금까지 이 데이터베이스의 SQL 덤프를 MySQL로 Import하는 데 문제가 있었던 적은 없습니다.
여기서의 문제는 무엇입니까?호환성 문제가 발생할 경우 MySQL을 사용하는 것이 좋습니다.
네, FK를 적용하기 전에 테이블을 작성하지 않을 가능성이 높기 때문에 구속선 출력에 주석을 달아 테이블을 작성한 후 구속선을 적용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/54875134/moving-to-mariadb-from-mysql-foreign-key-constraint-is-incorrectly-formed
반응형
'programing' 카테고리의 다른 글
c의 레이트레이스에서의 카메라 셋업 (0) | 2022.11.02 |
---|---|
Java에서 기본 액세스 지정자는 무엇입니까? (0) | 2022.11.02 |
문자열을 소문자로 변환하는 MySQL 명령어가 있습니까? (0) | 2022.11.01 |
PHP의 해시에 bcrypt를 사용하는 방법은 무엇입니까? (0) | 2022.11.01 |
Import된 모듈을 나열하는 방법 (0) | 2022.11.01 |