我的list_items表包含以下列
我的列表有一个主要的,自动递增的主键`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 ;
答案 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);