phpMyAdmin:无法设置特定的外键,即使类型相同

时间:2011-10-14 01:33:19

标签: mysql phpmyadmin

我的list_items表包含以下列

  • `ListID`
  • `WordID`

我的列表有一个主要的,自动递增的主键`ListID`。我想让list_items中的`ListID`成为引用列表中主键的外键,但是我收到错误:

  

在`ListID`上创建外键时出错(检查数据类型)。

两列都是int(8),两种表类型都是InnoDB。可能是什么问题?

以下these instructions在设置其他外键方面工作正常。

我唯一能想到的是在phpMyAdmin的主屏幕上,有一条消息:

  

“使用链接表的其他功能已停用。要查找原因请点击此处。”

但那不会有任何问题阻止我设置其他外键吗?

相关SQL:

--
-- Table structure for table `lists`
--

CREATE TABLE IF NOT EXISTS `lists` (
  ```ListID``` int(8) NOT NULL AUTO_INCREMENT,
  ```UserID``` int(8) NOT NULL,
  ```privacy``` varchar(25) NOT NULL,
  ```name``` varchar(50) NOT NULL,
  ```description``` text NOT NULL,
  ```date created``` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  ```date modified``` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (```ListID```),
  KEY ```UserID``` (```UserID```)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `lists`
--

--
-- Table structure for table `list_items`
--

CREATE TABLE IF NOT EXISTS `list_items` (
  ```ListID``` int(8) NOT NULL,
  ```WordID``` int(8) NOT NULL,
  KEY ```ListID``` (```ListID```),
  KEY ```WordID``` (```WordID```)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `list_items`
--

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  ```UserID``` int(8) NOT NULL AUTO_INCREMENT,
  ```email``` int(50) NOT NULL,
  ```username``` int(25) NOT NULL,
  ```password``` int(25) NOT NULL,
  ```join date``` int(11) NOT NULL,
  PRIMARY KEY (```UserID```)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

2 个答案:

答案 0 :(得分:2)

你的sql中有很多反引号 通常你只有1套,这可能会导致问题

例如

CREATE TABLE IF NOT EXISTS `list_items` (
  `ListID` int(8) NOT NULL,
  `WordID` int(8) NOT NULL,
  KEY `ListID` (`ListID`),
  KEY `WordID` (`WordID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

答案 1 :(得分:0)

我手动尝试了这个,下面的外键创建得很好

ALTER TABLE list_items ADD FOREIGN KEY fk_ListID (ListID) REFERENCES lists(ListID);