phpMyAdmin操作出现MySQL错误#1210求助:删除字段时提示参数错误
我之前在phpMyAdmin里做表结构修改时也碰到过一模一样的错误——明明全程都是点GUI按钮操作,没碰过一句SQL,结果突然弹出#1210 - Incorrect arguments to DATA DIRECTORY报错。后来折腾了一阵才搞明白,是phpMyAdmin的GUI在自动生成操作语句时偷偷加了DATA DIRECTORY参数,这才导致了问题。下面是几个我亲测有效的解决思路:
检查phpMyAdmin配置文件
打开phpMyAdmin的config.inc.php配置文件,找找有没有$cfg['Servers'][$i]['datadir']这一行。如果这个参数设置的路径不对,或者服务器上对应目录的权限有问题,phpMyAdmin就会在操作时错误地带上DATA DIRECTORY参数。要是你不需要自定义数据目录,直接把这行注释掉或者删掉就行。临时切换存储引擎
这个错误经常和MyISAM存储引擎绑定出现。如果你的表用的是MyISAM,先把它临时改成InnoDB(前提是你的MySQL支持InnoDB),完成删除字段的操作后再改回MyISAM。操作前记得备份表数据,避免意外。调整phpMyAdmin版本
有些旧版本的phpMyAdmin和MySQL 8.0+版本兼容性不好,会在生成ALTER TABLE语句时错误插入DATA DIRECTORY参数。试试把phpMyAdmin升级到最新稳定版,或者找一个和你的MySQL版本匹配的旧版本,应该能解决这个GUI生成语句的bug。手动修正并执行SQL
其实最直接的方法是自己改SQL。在phpMyAdmin里操作时,先找到“预览SQL”的选项(有些版本在点击确认前会显示要执行的语句;如果已经报错了,错误页面里也会显示生成的SQL),把语句里的DATA DIRECTORY = 'xxx'部分删掉,然后复制修正后的SQL到“SQL”标签页里手动执行,就能顺利完成删除字段的操作了。比如原来的错误语句可能是:ALTER TABLE `your_table` DROP COLUMN `old_field`, DATA DIRECTORY = '/var/lib/mysql/'删掉后面的
DATA DIRECTORY = '/var/lib/mysql/',执行剩下的部分就没问题了。
内容的提问来源于stack exchange,提问作者Mike S

