通过phpMyAdmin将自动增量添加到用作外键的现有列中 简而言之,有什么方法可以实现:

问题描述

这与add auto increment(AUTO_INCREMENT) for already foreign key assigned attribute?本质上是相同的问题,但有一个非常重要的区别,即我无权访问直接MysqL登录

我有一个表,该表的ID列用于其他大约12个表中的外键关系中,这些关系我以后不能删除并重新创建。由于某些原因,ID列不是auto_increment,其认值为0(零),这两个值都不是很实用,并且我想更改。

由于该列用于外键关系,因此仅更新该列将失败。

如果数据库托管在适当的位置,我只需直接登录MysqL并按照this answer的建议进行操作:

SET foreign_key_checks = 0;
ALTER TABLE t1 ALTER COLUMN `id` DROP DEFAULT;
ALTER TABLE t1 MODIFY COLUMN `id` INT NOT NULL AUTO_INCREMENT;
SET foreign_key_checks = 1;

但是,事实并非如此。它托管在共享服务器上,我与MysqL服务器进行交互的唯一可能方法是通过PHPMyAdmin或我自己的PHP脚本。在一个语句中有多个查询not possible through the PHP API,所以我不能仅仅将这种解决方案包装在一些PHP代码中并以此方式完成。

那让我有PHPMyAdmin。自PHPMyAdmin creates a new session for every request起,上面引用的解决方案也无法在此处使用:SET foreign_key_checks = 0的指令完全没有用处,因为它仅对在指令本身完成后结束的会话有效。 / p>

使用SET GLOBAL foreign_key_checks = 0一个显而易见的解决方法(应该在所有会话中持续使用),但不能:

#1227-访问被拒绝;您需要(至少其中一种)超级权限才能执行此操作

这些表都是InnoDB表,因此UPDATE TABLE t1 disABLE KEYS won’t work either因为仅适用于MyISAM表。

那使我……几乎没有想法。存储过程也许是可能的(我想是?尽管对这一次性的东西有些过头了),但是我对存储过程的经验通常充其量只是零碎的,而在PHPMyAdmin中完全不存在。


简而言之,有什么方法可以实现:

  • 暂时禁用外键检查或执行其他允许我执行的操作
  • auto_increment添加到已用于外键关系的列中,并且
  • 是否仅在PHPMyAdmin(或我自己的常规PHP脚本)中完成所有这些操作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)