无法使用 PHPMyAdmin 删除行

Unable to delete rows using PHPMyAdmin

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

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 的数据时,我 select 使用左侧复选框的一些行,然后按 [=31= 下面的删除 link ].我被重定向到另一个页面,显示以下 SQL 个要执行的查询:

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

注意这里缺少数据集的ID,导致查询失败。如果我在一行中按 "delete" 按钮,也会发生类似的情况。出现一个模态,显示以下输出:

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

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

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 的这种行为的任何差异。有什么想法吗?

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

How to upgrade phpMyAdmin in XAMPP to latest?

原创POST

我可以在我的环境中重现错误,但不能在 demo.phpmyadmin.net 上重现。如果您的 InnoDB 或 MyISAM table 名称在任何位置都有大写字符,如下所示,则可能存在此问题。我在 XAMPP Mac 运行 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;

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

可能有用。