【问题标题】:Contraint sql error: #1005 - Can't create table约束 sql 错误:#1005 - 无法创建表
【发布时间】:2014-02-19 16:07:37
【问题描述】:

错误 我在一台服务器上有一个工作站点。我决定把它搬到另一家公司。我用 phpmyadmin 导出数据库并上传到新服务器。每次我尝试导入数据库时​​都会收到此错误:

SQL 查询:

--
-- Constraints for table `seller_cart`
--
ALTER TABLE `seller_cart`
  ADD CONSTRAINT `seller_cart_ibfk_1`
    FOREIGN KEY ( `subscription` )
      REFERENCES `subscription` ( `id` ) ,
  ADD CONSTRAINT `seller_cart_ibfk_2`
    FOREIGN KEY ( `user` ) 
      REFERENCES `users` ( `user_id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE ,
  ADD CONSTRAINT `seller_cart_ibfk_3`
    FOREIGN KEY ( `featured_item` )
      REFERENCES `featured_item` ( `item` )
    ON DELETE CASCADE
    ON UPDATE CASCADE ;

MySQL 说:文档

#1005 - Can't create table 'project123.#sql-12050_1d' (errno: 150) (Details...)

卖家购物车的结构如下:

--
-- Table structure for table `seller_cart`
--

CREATE TABLE IF NOT EXISTS `seller_cart` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user` bigint(20) NOT NULL,
  `subscription` bigint(20) DEFAULT NULL,
  `description` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `item_listings` text COLLATE utf8_unicode_ci,
  `featured_item` bigint(20) DEFAULT NULL,
  `quantity` int(2) NOT NULL,
  `price` float NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user` (`user`),
  KEY `subscription` (`subscription`),
  KEY `featured_item` (`featured_item`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

可能是什么问题?我刚刚导出和导入了相同的数据库。甚至在本地主机上尝试过同样的问题。

【问题讨论】:

    标签: mysql sql database constraints


    【解决方案1】:

    当您尝试引用未编入索引的列时会引发此错误。

    检查是否

    1. 订阅(id)
    2. 用户 (user_id)
    3. featured_item (item)

    定义了有效的索引。如果没有,请定义它们并运行您的 ALTER ... 语句。

    参考:外键约束规则:

    【讨论】:

    • 结构:如果不存在则创建表seller_cartidbigint(20) 不为空 AUTO_INCREMENT,userbigint(20) 不为空,subscriptionbigint(20) 默认为空, description varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, item_listings text COLLATE utf8_unicode_ci, featured_item bigint(20) DEFAULT NULL, quantity int(2) NOT NULL, pricefloat NOT NULL, PRIM 987654332@), KEY user (user), KEY subscription (subscription), KEY featured_item (featured_item) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO=1跨度>
    • 那么,索引必须在父列的父表中定义。
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2021-08-06
    • 2012-12-27
    • 2023-03-07
    • 2018-02-04
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多