如何解决通过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中完全不存在。
简而言之,有什么方法可以实现:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。