【问题标题】:InnoDB error with create table创建表时出现 InnoDB 错误
【发布时间】:2012-04-19 22:54:41
【问题描述】:

有人知道,为什么这个 SQL 在创建表帐户时返回错误?

1005 - 无法创建表“mobilewaiter.accounts”(错误号:150)

我看到了,这个问题可能出在键上的索引上,但一切都与主键有关。 帮帮我,谢谢。

CREATE TABLE IF NOT EXISTS `tables` (
  `_id` int(10) NOT NULL AUTO_INCREMENT,
  `tag` varchar(40) COLLATE utf8_czech_ci NOT NULL,
  `name` varchar(40) COLLATE utf8_czech_ci NOT NULL,
  `occupied` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `users` (
  `_id` int(10) NOT NULL AUTO_INCREMENT,
  `nick` varchar(20) COLLATE utf8_czech_ci NOT NULL,
  `password` varchar(40) COLLATE utf8_czech_ci NOT NULL,
  `salt` varchar(20) COLLATE utf8_czech_ci NOT NULL,
  `email` varchar(50) COLLATE utf8_czech_ci NOT NULL,
  `firstname` varchar(20) COLLATE utf8_czech_ci NOT NULL,
  `lastname` varchar(20) COLLATE utf8_czech_ci NOT NULL,
  `role` varchar(20) COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `accounts` (
  `_id` int(10) NOT NULL AUTO_INCREMENT,
  `table_id` varchar(10) COLLATE utf8_czech_ci NOT NULL,
  `state` varchar(20) COLLATE utf8_czech_ci NOT NULL DEFAULT 'created',
  `user_id` int(10) NOT NULL,
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `end_time` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`_id`),
  FOREIGN KEY (`table_id`) REFERENCES `tables`(`_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY (`user_id`) REFERENCES `users`(`_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;

【问题讨论】:

  • 省略外键是否有效?
  • 是的,有问题。但我需要它,所以我需要知道究竟是什么导致了这个错误。我还创建了另一个表,它与表用户有连接,并且该表将创建而不会出错。
  • 您是否尝试过其他外键名称?也许它们与索引发生冲突。

标签: foreign-keys innodb create-table


【解决方案1】:

table_idvarchar(10) 但您希望它引用 tables._idint。为了使用外键,列的数据类型应该相同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 2019-01-17
    • 2017-09-02
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2018-06-14
    相关资源
    最近更新 更多