gpt4 book ai didi

mysql - 不寻常的 MySQL 错误 1005/1025

转载 作者:行者123 更新时间:2023-11-29 02:53:23 24 4
gpt4 key购买 nike

我好像遇到过一个奇怪的情况,有一个特定的表名我不能使用。让我解释一下。

CREATE TABLE IF NOT EXISTS hotstick_work_orders (
work_order_id BIGINT UNSIGNED NOT NULL,
step_id TINYINT UNSIGNED NOT NULL,
user_id INT UNSIGNED NOT NULL,
FOREIGN KEY (work_order_id) REFERENCES work_orders (id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (step_id) REFERENCES hotstick_steps (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY (work_order_id, step_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这在我的本地 MySql 堆栈 (v5.6.17) 上运行良好,但当我在 GoDaddy 上使用 PhpMyAdmin(v4.0.10.7,MySQL v5.5.42)尝试时,出现错误代码 #1005。

好吧,你说,这显然只是 FK 定义不完全匹配的另一种情况,或者可能是引用表在列上缺少索引的情况。但是,我什至无法在没有 FK 的情况下创建表格 - 以下内容同样失败:

CREATE TABLE IF NOT EXISTS hotstick_work_orders (
work_order_id BIGINT UNSIGNED NOT NULL,
step_id TINYINT UNSIGNED NOT NULL,
user_id INT UNSIGNED NOT NULL,
PRIMARY KEY (work_order_id, step_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

更有趣的是,如果我运行原始创建表查询但使用不同的名称,甚至是 hotstick_work_order(没有最后的 s),它工作正常。我可以将此表重命名为任何我想要的名称(包括更长的名称),hotstick_work_orders 除外。尝试给出错误 #1025,但仅限于该特定名称。

例如:

 RENAME TABLE hotstick_work_order TO hotstick_work_orders;
Resulting Error: #1025 - Error on rename of './db/hotstick_work_order' to './db/hotstick_work_orders' (errno: -1)

# Whereas this works fine:
RENAME TABLE hotstick_work_order TO hotstick_work_orders_something;

我以前没有任何同名的表,我也无法在 information_schema.table_constraints 表中找到任何现有的约束。

当然我可以使用不同的表名来管理,这没什么大不了的,但我很好奇 - 什么可能导致这种行为?

最佳答案

您可能遇到的问题是缓存命名的糟糕情况。正确的服务器重新启动可能会解决您的问题,但正如您所提到的,由于共享服务器配置,您无法这样做。

当我要求您创建一个具有确切名称的 MyISAM 表时,我们可以确定问题确实是链接到您的表名的缓存索引或约束。现在我建议你做的是:

  1. 尝试修复 MyISAM 表。
  2. 尝试优化表格。
  3. 执行 SELECT SQL_NO_CACHE * FROM TABLE 以阻止 MySQL 缓存查询。
  4. 放下 table 。
  5. 按照您的意愿重新创建它(使用约束和所有 InnoDB)。

关于mysql - 不寻常的 MySQL 错误 1005/1025,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33221512/

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