Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在numberofGPUs key (检查数据类型)上创建外键时出错-列完全相同,但我仍然遇到此问题

在numberofGPUs key (检查数据类型)上创建外键时出错-列完全相同,但我仍然遇到此问题
EN

Stack Overflow用户
提问于 2019-04-08 22:09:04
回答 1查看 43关注 0票数 0

我正在使用PHPMyAdmin为一个信息学类设置一个数据库(没有SQL之类的东西,只是将它直接放入PHPMyAdmin中),目前我正在尝试将我的一个表中的外键设置为另一个表中的主键。我一直收到这个错误:在多个key上创建外键时出错(检查数据类型)。我意识到一个是TINYINT,一个是INT,所以我改变了它,使它们都是INT的。我还注意到一个是有符号的,另一个没有,所以我把它们都设为无符号的。外键约束名称是唯一的(我甚至更改了它,以防它不是),老实说,我现在对它为什么要这样做感到困惑。我甚至删除了其中一个表(具有主键的那个表),并完全重新创建它,只是为了解决同样的问题。任何帮助都是非常有帮助的。

下面是用于创建RUNNING_GPUS表的SQL代码,该表具有主键numberofGPUs key:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `RUNNING_GPUS` (
`rigID` varchar(12) NOT NULL,
 `numberofGPUs` int(2) unsigned NOT NULL,
 `runningGPUs` int(2) unsigned NOT NULL,
 PRIMARY KEY (`rigID`,`numberofGPUs`),
 KEY `rigID` (`rigID`),
 CONSTRAINT `rig-fk-for-running` FOREIGN KEY (`rigID`) REFERENCES `RIGS` (`rigID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

下面是创建RIGS表的SQL代码,其中包含外键:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 CREATE TABLE `RIGS` (
 `rigID` varchar(12) NOT NULL,
 `rigName` varchar(50) NOT NULL,
 `osVersion` varchar(10) NOT NULL,
 `numberofGPUs` int(2) unsigned NOT NULL,
 `rigLocation` varchar(50) NOT NULL,
 `lastPing` varchar(4) NOT NULL,
 `lastReboot` varchar(4) NOT NULL,
 `latestCrash` varchar(4) NOT NULL,
 `lostRevenuePerHour` decimal(5,4) unsigned DEFAULT NULL,
 `hardwareErrorType` varchar(100) DEFAULT NULL,
 `hardwareErrorMean` decimal(7,3) unsigned DEFAULT NULL,
 PRIMARY KEY (`rigID`),
 CONSTRAINT `error-type-for-rigs` FOREIGN KEY (`hardwareErrorType`) REFERENCES `HARDWARE_ERRORS` (`hardwareErrorType`),
 CONSTRAINT `revenue-for-rigs` FOREIGN KEY (`lostRevenuePerHour`) REFERENCES `LOST_REVENUES` (`lostRevenuePerHour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

我还通过PHPMyAdmin添加了外键,但当我尝试执行以下代码时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE `RIGS`
ADD CONSTRAINT `test77`
FOREIGN KEY (`numberofGPUs`) REFERENCES `RUNNING_GPUS` (`numberofGPUs`);

它抛出一个错误告诉我:#1005 -无法创建表aetrigg_dbRIGS(错误号: 150“外键约束形式不正确”)

ETA:我已经花了一段时间来处理SQL文件系统了,所有的表都在里面了。除了这个数量的for之外,所有的东西都能正常工作。你可以访问这里的小提琴:http://sqlfiddle.com/#!9/ec079e。我只是从上面添加ALTER TABLE并将其添加到底部,但每次都会得到一个错误,说明它不能添加外键。RIGS表是父级,RUNNING_GPUS是rigID列的子级,但是RUNNING_GPUS是父级,而RIGS是column _ is列的子级。我试着先制作钻机,然后是RUNNING_GPUS,然后修改钻机工作台,但这不起作用。

EN

回答 1

Stack Overflow用户

发布于 2019-04-09 03:00:22

交换RUNNING_GPUS主键中的顺序

变化

主键(rigIDnumberofGPUs),

主键(numberofGPUsrigID),

外键本身必须是某种类型的键,显然mysql不认为键的次要部分是键类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55582453

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文