首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存在MySQL InnoDB表空间(损坏的表空间)

存在MySQL InnoDB表空间(损坏的表空间)
EN

Stack Overflow用户
提问于 2016-03-18 13:32:55
回答 2查看 8.7K关注 0票数 3

首先,我不是在寻找修复可怕的tablespace exists InnoDB错误发现here的方法,而是在寻找一种防止它的方法!在过去的几周里,我们随机地从数据库中删除了一个表,没有办法重新创建它(因为它给出了一个表空间存在错误)。我们把范围缩小到下表:

代码语言:javascript
复制
CREATE TABLE product_localised (
  id INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
  product_id INT (10) UNSIGNED NOT NULL,
  language_id INT (10) UNSIGNED NOT NULL,
  slug VARCHAR (255) COLLATE utf8_unicode_ci NOT NULL,
  title TEXT COLLATE utf8_unicode_ci,
  description TEXT COLLATE utf8_unicode_ci,
  description_short TEXT COLLATE utf8_unicode_ci,
  custom_startselect_content TEXT COLLATE utf8_unicode_ci,
  created_at TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  updated_at TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  deleted_at TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY product_localised_product_id_language_id_unique (`product_id`, `language_id`),
  KEY product_localised_language_id_foreign (`language_id`),
  CONSTRAINT product_localised_language_id_foreign FOREIGN KEY (`language_id`) REFERENCES languages (`id`),
  CONSTRAINT product_localised_product_id_foreign FOREIGN KEY (`product_id`) REFERENCES products (`id`)
) ENGINE = INNODB AUTO_INCREMENT = 46727 DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

问题是:有人能看看桌子的结构和钥匙,看看它是否有什么问题吗?!

我们在亚马逊的RDS上托管我们的数据库,并尝试了MySQL 5.5和5.6,启用了innodb_file_per_table。

我们还在UbuntuServer14.04LTS上试用了MySQL 5.5,在MySQL上使用xampp测试了MySQL 5.6。

对以下问题的答复:

考虑移除id并使用(product_id,language_id)作为PK。当然,您不需要20亿种语言,所以请考虑将language_id缩小为SMALLINT而不带符号:

  1. 我们更喜欢单列主键,因为它使ORM的使用更加容易
  2. 我们没有一百万种语言,但这只是我们在整个项目中使用的自动增量设置,这肯定不会造成任何问题吗?
EN

回答 2

Stack Overflow用户

发布于 2016-03-27 22:09:19

根据这个

Error: Tablespace for table xxx exists. Please DISCARD the tablespace before IMPORT

这可能有多种原因。

1)要么您的查询正在超时

2)要么有人通过运行set foreign_key_checks=0删除了外键检查

票数 0
EN

Stack Overflow用户

发布于 2016-03-29 22:48:07

看看这些措施是否适用于:

- 2015-08-03 5.7.8 --固定的虫子

失败的ALTER ( http://dev.mysql.com/doc/refman/5.7/en/alter-table.html )表空间操作(丢弃tablespace或导入TABLESPACE )可能产生不正确的内部表空间状态,导致后续语句失败。(Bug #76424,Bug #20748660)

- 2015-03-09 5.7.6里程碑16 -- Bugs固定-- InnoDB

删除了fil_space_t::tablespace_version字段,用于跟踪ALTER ( http://dev.mysql.com/doc/refman/5.7/en/alter-table.html )和ALTER ( http://dev.mysql.com/doc/refman/5.7/en/alter-table.html )操作。tablespace_version字段确保在导入具有相同space_id的表空间时,旧缓冲条目不会发生更改缓冲区合并。外地是多余的,不再需要。(Bug #19710564)

在使用ALTER丢弃其表空间后对表进行操作.丢弃TABLESPACE ( http://dev.mysql.com/doc/refman/5.7/en/alter-table.html )会导致严重的错误。(Bug #17700280)

-2012年-12-11 5.6.9 -固定的虫子- InnoDB

当使用丢弃的TABLESPACE或导入TABLESPACE子句执行ALTER ( http://dev.mysql.com/doc/refman/5.6/en/alter-table.html )语句时,由于文件系统中保留一个临时表空间文件,Windows系统上可能会出现超时错误。(Bug #14776799)

-2012年-12-11 5.6.9 - Bugs固定

在发出ALTER之后..。丢弃TABLESPACE,同一表的联机DDL操作可能会在Windows系统上发生错误:从存储引擎获得错误11。带有http://dev.mysql.com/doc/refman/5.6/en/alter-table.html子句的ALTER ( ALGORITHM=INPLACE )语句还可以创建一个空的.ibd文件( file ),使表空间不再“丢弃”。(Bug #14735917)

http://forums.mysql.com/read.php?22,633145 (表不存在)

http://forums.mysql.com/read.php?20,615512 (MySQL/innodb数据库故障)

http://forums.mysql.com/read.php?22,603093 (数据库不断崩溃-断言失败?)

http://forums.mysql.com/read.php?22,601100 (丢弃TABLESPACE所需的帮助)

http://forums.mysql.com/read.php?10,591035 (在某些表的.ibd文件被删除后,该怎么办?)

http://forums.mysql.com/read.php?22,444342 (数据库崩溃和进程过载)

http://forums.mysql.com/read.php?22,355932 (InnoDB找不到指定的“路径”)

http://forums.mysql.com/read.php?22,290138 (删除数据库后,表“已经存在”)

http://forums.mysql.com/read.php?22,270607 (*.frm文件和减少ibdata文件)

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

https://stackoverflow.com/questions/36085768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档