6

由于负载阴影问题,我的数据库中的一个表被破坏了。我删除了表,现在我想再次创建表。

我收到此错误

错误 1813:表 ' 的表空间zorkifsys_user_accounts'存在。请在 IMPORT 之前丢弃表空间。

SQL 语句:

CREATE  TABLE `zorkif`.`sys_user_accounts` (
    `UserID` INT NOT NULL AUTO_INCREMENT ,    
    PRIMARY KEY (`UserID`) ,    
    UNIQUE INDEX `UserID_UNIQUE` (`UserID` ASC)
)

什么是表空间以及如何丢弃这个表空间?我必须在查询中运行任何命令吗?如何处理这个问题?

4

12 回答 12

10

这对我有用,但我在本地服务器中使用它。

打开安装xampp的目录,例如

C:/xampp/mysql/data/...

选择要删除的表空间的文件夹(类似于数据库名称),然后删除扩展名为idb. 仅删除与要创建/删除的表对应的一个文件。

就我而言,我的文件是karyawan.idb

希望这对你有用。

于 2014-02-21T04:12:47.560 回答
5

我花了很长时间在我的一个生产数据库上解决这个问题。以下步骤实际上非常干净地解决了这个问题:

-> deactivate your app/page - any requests to your db (if you dont have a service mode in your app - build one :P)
-> mysqldump your db (optionally with --routines=true);
-> kill the folder with db name
-> create schema db name;
-> drop schema db name;
-> restart mysql (service mysql restart - or similar depending on your os)
-> create schema db name;
-> mysql import your previously created dump;
于 2016-12-27T22:34:48.933 回答
3

重复错误:表 xxx 的表空间存在。请在 IMPORT 之前丢弃表空间

<WAMP or XAMPP path >\bin\mysql\mysqlX.X.XX\data\<your database name>

删除整个数据库文件夹并重新启动 apache。

再次创建数据库并导入数据库。

有用。

于 2015-04-27T07:15:58.620 回答
2

步骤 1:备份 mysql/database/*.ibd 到另一个文件夹

第二步:删除所有mysql ib_logfile*

第三步:重启mysql服务

第 4 步:从 shell 登录 mysql

第 5 步:运行:

- use database;
- ALTER TABLE table_name DISCARD TABLESPACE; 

(对所有表空间有问题的表重复)

第 6 步:将 *.ibd 从备份文件夹复制到 mysql/database/ 文件夹

第 7 步:通过运行查询重复第 3,4 步:

- use database;
- ALTER TABLE table_name IMPORT TABLESPACE; 
于 2017-09-07T03:24:54.350 回答
1

尝试删除表空间可能会给您带来其他错误。对我来说,我收到以下错误:

DROP TABLESPACE `tablename`

Error Code: 1478. Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' 

我的解决方案是删除数据库。这将删除与其相关的所有表空间,并允许您再次创建表。

于 2013-06-18T04:47:11.030 回答
1

以下适用于 MariaDB 10.3.12:

  • 在另一个数据库中创建另一个同名表
  • sudo cp -p otherdb/tablename.frm 问题db/tablename.frm
  • 删除表问题db.tablename

在此之后一切都应该工作并且是干净的。

于 2019-02-05T00:06:47.760 回答
1

打开安装MAMP的目录,例如

Macintosh ▸ Applications ▸ MAMP ▸ db ▸ ... 选择要删除的表空间的文件夹(类似于数据库名称),然后删除扩展名为 idb 的文件。仅删除与要创建/删除的表对应的一个文件。

例如文件:Macintosh ▸ Applications ▸ MAMP ▸ db ▸ mysql57 ▸ example_db ▸ amc_customer.ibd

尝试这个。这对我有用。

于 2019-04-29T06:50:31.567 回答
0

在创建此表之前运行此查询以删除TABLESPACE

DROP TABLESPACE `zorkif`.`sys_user_accounts`

TABLESPACE can contain one or more data files, providing storage space for tables.
于 2013-04-15T06:25:02.757 回答
0

在我的情况下,即使在导入之前删除表之后,我也无法丢弃 TABLESPACE,因为 mysql 说不存在 TABLESPACE,如果是这种情况,是因为该表的索引仍然存在,所以您需要删除这些索引

DELETE FROM innodb_index_stats WHERE table_name='table_name_here';

之后丢弃表空间错误不再发生,我可以成功导入表

于 2019-10-03T08:52:22.613 回答
0

解决此问题的步骤:

  1. 将您的架构导出到备份文件
  2. 删除模式
  3. 修改导出的 SQL 脚本,添加您需要的“创建表”
  4. 创建相同的架构
  5. 从备份文件中导入您的架构
于 2016-03-23T13:01:24.940 回答
0

如果您使用的是 Mac,请转到 Applications->XAMPP->xamppfiles->var-mysql 查找您的数据库名称。您可能必须以特权授予“每个人”的“读写”访问权限。此后,删除相关的 .idb 文件。重新启动 XAMPP,您应该一切顺利。

于 2018-08-23T14:28:33.973 回答
0

如果您在本地主机上遇到此错误,只需转到 xamp 文件夹,移动到 mysql 文件夹,移动到 data 文件夹,在 data 文件夹中您将看到基于数据库名称的数据库列表,选择数据库的文件夹那是给你错误,给你错误的特定表名并重新导入你的数据库。

现在就在我的系统上解决这个问题

于 2017-03-22T22:59:24.123 回答