【问题标题】:Unable to delete rows using PHPMyAdmin无法使用 PHPMyAdmin 删除行
【发布时间】:2016-07-31 09:18:54
【问题描述】:

我在我的 Mac 上使用 PHPMyAdmin 4.6.0(当前稳定版)来管理 MySQL 表。我创建了一个具有以下架构的表:

CREATE TABLE `table1` (
  `id` int(11) NOT NULL,
  `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  `table2id` int(11) NOT NULL,
  `col2` float DEFAULT NULL,
  `col3` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `table1`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_table1_table2` (`table2id`);

ALTER TABLE `table1`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

查看 table1 中的数据时,我使用左侧的复选框选择了一些行,然后按表下方的删除链接。我被重定向到另一个页面,显示以下要执行的 SQL 查询:

DELETE FROM `table1` WHERE ;
DELETE FROM `table1` WHERE ;
DELETE FROM `table1` WHERE ;

注意这里缺少数据集的ID,导致查询失败。如果我连续按下“删除”按钮,也会发生类似的事情。出现一个模式,显示以下输出:

Do you really want to execute "DELETE FROM `table1` WHERE LIMIT 1"?

请注意,这里也缺少WHERE 子句。然而,它适用于另一个数据库中的不同表,甚至是同一数据库中的另一个表。例如,另一个表具有以下架构:

CREATE TABLE `table3` (
  `id` int(11) NOT NULL,
  `name` varchar(70) COLLATE utf8_unicode_ci DEFAULT NULL,
  `shortname` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `table3`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `table3`
   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

实际上,我在这里看不到任何会导致 PHPMyAdmin 出现这种行为的差异。有什么想法吗?

【问题讨论】:

  • 我无法重现此问题。你能在demo.phpmyadmin.net 的演示服务器上重现它吗?如果将该表复制到另一个数据库,问题是否仍然存在?如果您导出然后导入(或复制并粘贴 SQL)到新数据库(而不是从“操作”选项卡复制)有帮助吗?
  • 另外,您可以尝试清除浏览器缓存。这是新安装还是从以前的 phpMyAdmin 版本升级?
  • 我有同样的问题,干净的版本是最新的 phpmyadmin

标签: phpmyadmin


【解决方案1】:

更新 - phpMyAdmin 4.6.6 修复了这个错误。

How to upgrade phpMyAdmin in XAMPP to latest?

原帖

我可以在我的环境中重现该错误,但不能在 demo.phpmyadmin.net 上重现。如果您的 InnoDB 或 MyISAM 表名在任何位置有任何大写字符,如下所示,则可能存在此问题。我在 Mac 上的 XAMPP 上运行 phpMyAdmin 版本 4.5.2、10.1.19--MariaDB - 源代码分发,PHP 版本 5.6.28。

CREATE TABLE `MyTable1` (
  `id` int(11) NOT NULL,
  `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  `table2id` int(11) NOT NULL,
  `col2` float DEFAULT NULL,
  `col3` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `MyTable1`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_MyTable1_table2` (`table2id`);

ALTER TABLE `MyTable1`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

【讨论】:

    【解决方案2】:

    您可能设置了外键约束on_delete。因此,请转到 结构选项卡,然后单击 关系视图。在那里,您可以找到外键约束。将 On delete 选项更改为 No Action

    它可能会起作用。

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 2013-03-14
      • 2015-05-10
      相关资源
      最近更新 更多