免费提问

mysql提示没有主键怎么办?

144
提问者 鍾繁
2019-01-15 10:55 悬赏 0财富值 阅读 813回答 1

今天用navicat打开一个数据库表,结果给我来个提示说“keren没有主键”,然后就是什么都干不了,如下图所示:

mysql提示没有主键怎么办?

像这样的情况是什么原因造成的?应该怎样去解决?


mysql
登录 后发表回答
freewolf
1楼 · 2019-01-15 12:40.采纳回答

这个提示的已经很明确了,就是说你的keren这个表没有主键,你必须去设置一个主键,然后这个表就正常了,操作方法如下:

1、用mysql语句解决,这个提示已经连数据库语句都帮你写好了,请看:

SET ModifiedFileldsAndValues WHERE AllFileldsAndOldValues LIMIT 1

在mysql命令行下面执行上面的语句就搞定了。


2、用工具来解决,这里以navicat为例,在keren这个表上面点右键,设计如下图所示:

用navicat数据库管理工具为数据库表设置主键

用鼠标点击设置好主键后,这个地方会出现一把钥匙的图标出现,然后点保存即可,到这里,数据表设置主键完毕,再数据表就正常了,也不会出现刚才的提示了。


cueoa2
2楼-- · 2019-03-22 14:09

我把表删除重建了一边就正常了,语句是能用的,只是不知道之前的表明明取消了主键还是能查出约束,外键,索引什么的都没有。


2306770280
3楼-- · 2019-03-22 14:11

在sybase的ase和asa中,可以使用如下的系统存储过程来获取主键: exec sp_pkeys “table_name“; sql server也是一样的! 至于mysql,我没这个环境,相信应该有类似的存储过程的!


奋不顾身勇敢的我
4楼-- · 2019-03-22 13:35

你看看你的程序 如果查询的条件中没有用到主键,可以将你的查询字段设置为索引。如果你想在主键上设置索引的话,不需要了,主键就有索引的功能


muxi
5楼-- · 2019-03-22 13:33

添加主键~ ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 添加外键~ ALTER TABLE table_name ADD CONSTRAION pk_name FOREIGN KEY(列名) REFERENCES table_name(列名); 基础语法~其他条件自行添加


黄金投资的海角
6楼-- · 2019-03-22 13:39

主键自增: create table test ( id int unsigned not null primary key auto_increment, username varchar(15) not null )auto_increment = 100;可在建表时可用“auto_increment=n”选项来指定一个自增的初始值。 alter table tbname auto_increment = x ;设置表tbname的唯一auto_increment字段起始值从x开始,如果此表数据量很多的话,这样执行起来会很慢 auto_increment说明: (1)如果把一个null插入到一个auto_increment数据列里去,mysql将自动生成下一个序列编号。编号从1开始,并1为基数递增。 (2)把0插入auto_increment数据列的效果与插入null值一样。但不建议这样做,还是以插入null值为好。 (3)当插入记录时,没有为auto_increment明确指定值,则等同插入null值。 (4)当插入记录时,如果为auto_increment数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为auto_increment数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。 (5)如果用update命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。


网站简介 | 竞价技巧 | 网站建设 | 原创作品 | 联系我们 |

鄂ICP备17013851号-4|经营许可证:鄂B2-20160818 |互联网药品信息服务资格证: 粤20130124|鄂公网安备:42010601000001|版权登记号:2016SR017186