代码之家  ›  专栏  ›  技术社区  ›  Brett

从MySQL迁移到MariaDB-外键约束格式不正确

  •  0
  • Brett  · 技术社区  · 6 年前

    马里亚布 ,而我正在使用的旧版本 ,我很满意。

    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;
    

    可能是因为 可下载的产品权限 再往下一点 因为它认为表不存在而出错?但是说到这里,我从来没有遇到过将这个数据库的SQL转储导入MySQL的问题。

    1 回复  |  直到 6 年前
        1
  •  0
  •   SaneGaming    6 年前

    是的,很可能在应用FK之前没有创建表,您可以将约束行注释为make your tables,然后在约束完全创建后应用约束。