将 MyISAM 转换为 InnoDB,其中表具有两列(复合)PK,其中之一是自动增量
Posted
技术标签:
【中文标题】将 MyISAM 转换为 InnoDB,其中表具有两列(复合)PK,其中之一是自动增量【英文标题】:Convert MyISAM to InnoDB where tables have two-column (composite) PK and one of those is auto-increment 【发布时间】:2011-06-30 23:05:36 【问题描述】:我想将我们的一些 MyISAM 表转换为 InnoDB,以便我可以利用外键支持。但是,大多数表使用两列(复合)主键设计,其中一个列是自增列(这是出于历史原因这样做,同时也确保自增列可以充当一种其他列值上下文中记录的增量键)
我意识到我们需要取消多列主键才能使用自动增量和 InnoDB。我们有数千条记录,这些记录与其他表有关系。
有没有关于如何将这些表转换为 InnoDB 的提示?我想出的唯一方法是首先在每个表中添加一个新列,将其设置为唯一的自动增量主键,然后使用脚本更新依赖表以指向新的(真正唯一的)主键.
谢谢 史蒂夫
【问题讨论】:
【参考方案1】:在 mysql 5.0 及更高版本中,您可以将自动增量列作为主键的一部分,但它必须是索引中的第一个字段。
*...一个 AUTO_INCREMENT 列必须作为 InnoDB 表索引中的第一列出现...*
在此处查看文档条目http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html
【讨论】:
以上是关于将 MyISAM 转换为 InnoDB,其中表具有两列(复合)PK,其中之一是自动增量的主要内容,如果未能解决你的问题,请参考以下文章
MySql - 将 InnoDB 转换为数据库的 MyISAM 存储引擎
如何将 MAIN mysql 数据库从 MyIsam 转换为 InnoDB