mysql5.7.16 MRG_MYISAM引擎表损坏如何修复

街头小贩 2017-01-03 02:25:35
表结构:


MRG_MYISAM引擎表结构

CREATE TABLE IF NOT EXISTS king_article_merge(
`id` BIGINT(20) UNSIGNED NOT NULL COMMENT '新闻ID',
`channel` INT(10) UNSIGNED NOT NULL COMMENT '频道ID',
`date` DATETIME NOT NULL COMMENT '日期',
UNIQUE KEY(channel,id),
INDEX(`date`)
)ENGINE=MRG_MYISAM DEFAULT CHARSET=utf8 INSERT_METHOD=LAST AUTO_INCREMENT=1 UNION=(`king_article_today`,`king_article_yesterday`);


现在一访问表就提示:
Error Code: 1168. Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist



出问题后我重建这个表:king_article_merge,原来(OP)提示:repair
...全文
352 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2017-01-06
  • 打赏
  • 举报
回复
引用 4 楼 xiaofanku 的回复:
[quote=引用 3 楼 yupeigu 的回复:] 这个应该是报错了,你应该用的是 merge 引擎的表,可以实现把多个myisam表合并成1个表,但是合并的时候有一个unique 约束,要保证这个约束字段的值是全局唯一的,你看看数据是否有问题
不是表损坏了吗[/quote] 你看看 这个表底层的myisam表是不是损坏了,查一下表的数据
街头小贩 2017-01-05
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
这个应该是报错了,你应该用的是 merge 引擎的表,可以实现把多个myisam表合并成1个表,但是合并的时候有一个unique 约束,要保证这个约束字段的值是全局唯一的,你看看数据是否有问题
不是表损坏了吗
LongRui888 2017-01-04
  • 打赏
  • 举报
回复
这个应该是报错了,你应该用的是 merge 引擎的表,可以实现把多个myisam表合并成1个表,但是合并的时候有一个unique 约束,要保证这个约束字段的值是全局唯一的,你看看数据是否有问题
rucypli 2017-01-04
  • 打赏
  • 举报
回复
Similarly, a column with a UNIQUE index in the underlying tables should be indexed in the MERGE table but not as a UNIQUE index.) UNIQUE KEY(channel,id), 两个表的唯一键合并不能是唯一键
街头小贩 2017-01-03
  • 打赏
  • 举报
回复
+-------------------------+ | @@version | +-------------------------+ | 5.7.16-0ubuntu0.16.04.1 | +-------------------------+

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧