gpt4 book ai didi

mysql - 错误 1005 (HY000) : Can't create table "x" (errno: -1)

转载 作者:可可西里 更新时间:2023-11-01 08:47:00 25 4
gpt4 key购买 nike

当我尝试在 MySQL 服务器中创建表时出现错误,

ERROR 1005 (HY000): Can't create table 'bill_period' (errno: -1)

请注意,这与“ERROR 1005 (HY000): Can't create table (errno: 150)”不同(请注意错误编号不同)。

即使是简单的创建表也会因此错误而失败,并且未设置和不使用外键。并且有足够的磁盘空间可用。

有什么想法吗?

为了调试目的,我用一个新的表名做了同样的查询,而不是原来的表名,第二个似乎没问题,

mysql> CREATE TABLE IF NOT EXISTS `bill_period` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `day` tinyint(2) unsigned NOT NULL,   PRIMARY KEY (`id`),   KEY `day` (`day`) );                

ERROR 1005 (HY000): Can't create table 'bill_period' (errno: -1)

mysql> CREATE TABLE IF NOT EXISTS `bill_period_1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `day` tinyint(2) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `day` (`day`) );
Query OK, 0 rows affected (0.42 sec)

最佳答案

这是一个老问题,但我今天才收到这个问题,并找到了解决方案(是的,errno = -1)。

我们的表是 InnoDB,每隔几个小时创建和销毁一次。我们最近启动了一个从属服务器来跟随那个主人。我们还使用“innodb_file_per_table”选项。

错误只会发生在从机上,不会发生在主机上。问题是我们最近在几个小时前使用 rsync 将该从站与主站同步。

rsync复制了表文件,但同时被master删除了,因为它是一个临时表。因此,.idb 文件存在于从站中,但不再存在于主站中。

当 master 发送创建表的请求时,slave 不能,因为文件已经存在。 MySQL 不知道表的存在,因为元数据表示那里没有表。我假设 MySQL 正在尝试创建该文件,但由于它在那里,所以失败了。

在我的例子中,解决方案是删除另一个文件夹中的 .idb 文件(当然首先要有一个备份副本)。

然后,数据库会允许我们创建表,slave会再次跟随master

完成 rsync 的更好方法是使用 --delete 选项删除从主服务器上删除的任何陈旧文件。

无论如何 - 您可能不会遇到我所描述的确切情况,但它可能只是一个陈旧的文件,出于某种原因而留在那儿。

关于mysql - 错误 1005 (HY000) : Can't create table "x" (errno: -1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com