由于loadhading问题,我数据库中的一个表被破坏了。 我放弃了桌子,现在我想再次创建桌子。
我收到错误:
ERROR 1813:表'
zorkif
。sys_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)
)
什么是表空间以及如何丢弃此表空间? 我必须在查询中运行任何命令吗? 如何处理这个问题?
答案 0 :(得分:7)
这对我有用,但我在本地服务器中使用它。
打开安装xampp的目录,例如
C:/xampp/mysql/data/...
选择要删除的表空间的文件夹(类似于数据库名称),然后删除扩展名为idb
的文件。仅删除与要创建/删除的表对应的一个文件。
在我的情况下,我的文件是karyawan.idb
,
希望这适合你。
答案 1 :(得分:2)
重复Error: Tablespace for table xxx exists. Please DISCARD the tablespace before IMPORT
<WAMP or XAMPP path >\bin\mysql\mysqlX.X.XX\data\<your database name>
删除整个数据库文件夹&amp;重启apache。
再次创建您的数据库&amp;导入数据库。
有效。
答案 2 :(得分:2)
我花了很长时间才在我的一个生产dbs上解决这个问题。以下步骤实际上非常干净地解决了这个问题:
-> 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;
答案 3 :(得分:1)
步骤1:将mysql / database / *。ibd备份到另一个文件夹
步骤2:删除所有mysql ib_logfile *
第3步:重启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;
答案 4 :(得分:1)
例如,打开安装MAMP的目录
Macintosh▸应用程序▸MAMP▸db▸... 选择要删除的表空间的文件夹(类似于数据库名称),然后删除扩展名为idb的文件。仅删除与您要创建/删除的表相对应的一个文件。
例如文件: Macintosh▸应用程序▸MAMP▸db▸mysql57▸example_db▸amc_customer.ibd
尝试一下。 对我来说有用。
答案 5 :(得分:0)
在创建此表之前,请运行此查询以删除TABLESPACE
DROP TABLESPACE `zorkif`.`sys_user_accounts`
TABLESPACE can contain one or more data files, providing storage space for tables.
答案 6 :(得分:0)
的解决方案强> 的
但是,更简单的选择是:重启mysql,然后执行帖子开头附近列出的相同的四个步骤。这样,数据字典上的表空间id和文件匹配;因此导入表空间成功。
这可以让你更有信心在恢复过程中处理一些InnoDB“陷阱”甚至是文件传输。
答案 7 :(得分:0)
尝试删除表空间可能会给您带来其他错误。对我来说,我收到以下错误:
DROP TABLESPACE `tablename`
Error Code: 1478. Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP'
我的解决方案是删除数据库。这将删除与其相关的所有表空间,并允许您再次创建表。
答案 8 :(得分:0)
解决此问题的步骤:
答案 9 :(得分:0)
如果您在本地主机上遇到此错误,请转到 xamp文件夹,移动到mysql文件夹,移动到数据文件夹,在数据文件夹里面你会看到基于数据库名称的数据库列表,选择给你错误的数据库文件夹,给出的特定表名你错了并重新导入你的数据库。
现在就在我的系统上解决这个问题
答案 10 :(得分:0)
如果您使用的是Mac,请转至Applications-> XAMPP-> xamppfiles-> var-mysql查找数据库名称。您可能必须授予“所有人”的“读写”访问权限。之后,删除相关的.idb文件。重新启动XAMPP,您应该一切顺利。
答案 11 :(得分:0)
以下内容适用于MariaDB 10.3.12:
一切都应该正常工作,并且在此之后要保持清洁。
答案 12 :(得分:0)
就我而言,即使我在导入之前删除了表,也无法丢弃TABLESPACE,因为mysql表示不存在TABLESPACE,如果是这种情况,那是因为该表的索引仍然存在,因此您需要删除那些索引
$builder->add('houseNumber', TextType::class, [
'label' => 'Huisnummer',
'attr' => [
'maxlength' => 8,
],
'constraints' => [
new NotBlank([
'groups' => $options['constraint_groups']
]),
new Regex([
'pattern' => '/^[0-9]+$/',
'message' => 'Vul alleen het huisnummer in cijfers in.'
]),
new Length([
'groups' => $options['constraint_groups'],
'max' => 8
])
]
])->add('poBox', TextType::class, [
'label' => 'Postbus',
'attr' => [
'maxlength' => 10,
],
'constraints' => [
new Length([
'groups' => $options['constraint_groups'],
'max' => 10
])
]
]);
此后,不再发生“丢弃表空间”错误,我可以成功导入表