MySQL 建表报错:Incorrect table definition; there can be only one auto column and it must be defined as a

这篇具有很好参考价值的文章主要介绍了MySQL 建表报错:Incorrect table definition; there can be only one auto column and it must be defined as a。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

示例:表中有两个列,id、real_id,id 列只想作为记录的序号存储(如需要保持排序的记录),real_id 列则是记录真正的主键。所以将 id 列设为自增列,方便,不需要程序控制序号递增。建表语句如下:

CREATE TABLE `example_table` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '本条记录的序号',
  `real_id` int NOT NULL DEFAULT 0 COMMENT '真正的主键',
  PRIMARY KEY (`real_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

现象:建表报错,报错信息:Incorrect table definition; there can be only one auto column and it must be defined as a key。意思是:建表语句有错误,表中只能包含一个自增列,且该列必须为主键
    很多解决办法就简单用了下这个报错提示给出的方法去修正,比如取消自增约束,或者将自增列设为主键。那问题是,如果就不想将自增列设为主键呢?可见解决方法 3
常规解决方法 1:取消自增约束,使用程序控制序号递增。(还得自己写事务保证数据完整性,烦

CREATE TABLE `example_table` (
  `id` int NOT NULL COMMENT '本条记录的序号',
  `real_id` int NOT NULL DEFAULT 0 COMMENT '真正的主键',
  PRIMARY KEY (`real_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

常规解决方法 2:将自增列改为主键。(主键一般和业务相关,改了主键就得改业务,烦

CREATE TABLE `example_table` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '本条记录的序号',
  `real_id` int NOT NULL DEFAULT 0 COMMENT '真正的主键',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

解决方法 3:给非主键的自增列增加唯一性索引。(虚晃一枪,来骗来偷袭,巴适得很文章来源地址https://www.toymoban.com/news/detail-537103.html

CREATE TABLE `example_table` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '本条记录的序号',
  `real_id` int NOT NULL DEFAULT 0 COMMENT '真正的主键',
  PRIMARY KEY (`real_id`),
  UNIQUE KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

到了这里,关于MySQL 建表报错:Incorrect table definition; there can be only one auto column and it must be defined as a的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 解决 “... can only be called from the main thread” 问题

    有些属性或方法只能在主线程中调用,如 .gameObject 、 Instantiate() 等。这是 Unity 设计时的一个缺陷(为了保证线程安全),多年来一直没有修正,或者说官方懒得弄。 以 Instantiate() 为例,在非主线程调用时,报错大概如下所示。其他属性或方法的报错也大体相同。 注:应注意

    2024年01月17日
    浏览(49)
  • getUserProfile:fail can only be invoked by user TAP gesture

    获取用户信息失败,error: getUserProfile:fail can only be invoked by user TAP gesture 它的大概意思就是: 该接口必须用户点击才可以调通 官方获取用户信息调整通告:小程序登录、用户信息相关接口调整说明 | 微信开放社区 wx.getUserProfile(Object object) 所以改造下方法,让用户先点击 前端

    2024年02月11日
    浏览(34)
  • TypeError: only size-1 arrays can be converted to Python scalars

    Traceback (most recent call last):   File \\\"/home/yjq/socket_test/server2.py\\\", line 22, in module     msg.data = float(np.array(eval(from_client_msg.decode(\\\"gbk\\\"))))#先转换为列表,再转为数组                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: only size-1 arrays can be converted to Python scalars 这个

    2024年02月12日
    浏览(27)
  • 解决only one element tensors can be converted to Python scalars

    目录 解决 \\\"only one element tensors can be converted to Python scalars\\\" 错误 问题源头 解决方法 方法一:使用​​item()​​方法 方法二:使用索引操作 总结 语法 参数 返回值 使用场景 示例 当我们使用PyTorch进行深度学习任务时,有时会遇到以下错误信息:\\\"only one element tensors can be conve

    2024年02月03日
    浏览(36)
  • File chooser dialog can only be shown with a user activation.

    使用vue开发时,通过ref通过“this.refs.[name].$el.click()”触发按钮时提示“File chooser dialog can only be shown with a user activation.”,按钮不能触发,网上解决办法是“dispatchEvent(new MouseEvent(\\\'click\\\'))”代替“$el.click()”,在我所在的场景不生效,所以就在要出发按钮组件上加了一个id,按

    2024年01月23日
    浏览(36)
  • 解决TypeError: only size-1 arrays can be converted to Python scalars

    目录 解决TypeError: only size-1 arrays can be converted to Python scalars 错误示例 错误分析 解决方法 方法一:使用​​flatten()​​ 方法二:使用ravel() 结论 在Python中,当我们尝试将一个数组作为标量(scalar)进行操作时,有时会遇到 ​ ​TypeError: only size-1 arrays can be converted to Python sca

    2024年02月05日
    浏览(40)
  • 【小程序】报getUserProfile:fail can only be invoked by user TAP gesture.

    最近新搭建了个小程序项目,登录时报getUserProfile:fail can only be invoked by user TAP gesture.这个错误。查了网上说的是使用了async和await,试着改了不用async和await,结果还是一样报这个错误。 我的代码是用户点击授权按钮后,先使用wx.login,接着后面使用wx.getUserProfile,在同一个方法

    2024年02月12日
    浏览(33)
  • TypeError: only integer scalar arrays can be converted to a scalar index

    报错信息: 类型错误,只有整型标量数组才能转换成标量索引,但一般问题都不在于你的索引是不是整数。这个报错一般会出现在你想使用一个索引列表去索引另一个列表,即诸如list[index_list]的形式,此时就会出现此报错,因为 index_list 为 List列表类型,不被允许;如果是数

    2024年02月11日
    浏览(56)
  • Wireshark报错 Info can only be sorted with 10000 or fewer visible rows——解决办法

    使用info筛选出Query和Response数据包时,报错: Info can only be sorted with 10000 or fewer visible rows; increase cache size in Layout preferences 。 这通常是因为Wireshark的缓存大小设置不够大,导致无法处理大量数据。  在菜单栏中选择“Edit”(编辑) - “Preferences”(首选项)。 选择外观,布局

    2024年03月19日
    浏览(40)
  • 微信小程序:requestSubscribeMessage:fail can only be invoked by user TAP gesture的问题

    wx.requestSubscribeMessage(Object object) 发生`requestSubscribeMessage:fail can only be invoked by user TAP gesture`错误提示的原因主要是: 2.8.2版本开始, 用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面 。 也就是说通过其他方式去拉起订阅都是不成功的。 调起客户端小程序订阅

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包