【问题标题】:Dropping a table in MySQL (3.23.58) with a special character in the tablename在 MySQL (3.23.58) 中删除表名中带有特殊字符的表
【发布时间】:2010-11-09 18:19:00
【问题描述】:

是的,这是一个旧数据库(我们正在迁移)。不知何故,phpMyAdmin 让用户创建一个带有 ' 的表。

名称:type_save'

但是,我现在似乎无法放下那张桌子。我已经从命令行尝试过:

mysql> drop table "type_save\'";
ERROR 1064: You have an error in your SQL syntax near '"type_save\'"' at line 1                                                                          

mysql> drop table "type_save'";
ERROR 1064: You have an error in your SQL syntax near '"type_save'"' at line 1    


mysql> drop table `type_save'`;
'>                                                                                      

您如何正确地避免这种情况?

谢谢...

【问题讨论】:

  • 即使将表名用反引号括起来,它仍然不会删除它。

标签: mysql mysql-management


【解决方案1】:

根据Does MySQL allows to create database with dot?,您使用反引号引用名称,如

drop table `type_save'`

试试看是否有帮助。

【讨论】:

  • 谢谢,我试过了,但它看不到,工作。如果我们尝试使用 phpMyAdmin,我们实际上会崩溃整个数据库:
  • 试图获取一些变量。某些指针可能无效并导致转储中止... thd->query at 0x89d68f0 = DROP TABLE type_save' thd->thread_id=45115
  • 这些 cmets 没有正确显示 bactick,但它们在复制/粘贴到这个 textarea 中。
  • 我没有注意到您使用的是 MySQL v3。嗯...尝试将单引号加倍,例如删除表 type_save''。
  • 那也没用,鲍勃。尝试了两个单引号。必须有某种方法可以做到这一点。我不知道为什么它首先允许它......
【解决方案2】:

试试这个:

mysql> drop table `type_save'`;

注意:“mysql>”只是命令提示符。

字符是`(反撇号或左单引号)。

【讨论】:

  • mysql> 删除表type_save'; '>
【解决方案3】:

它是 MySQL 3.x,所以它很可能是 MyISAM(甚至是 ISAM)。由于删除表的常规方法不起作用(因为您说它会使服务器崩溃),如果它是 MyISAM/ISAM,只需直接从文件系统中删除相关的 .MYI.MYD.frm 文件,或者如果您出于某种原因需要保留它们,请将它们移到其他地方。然后做一个刷新表。您甚至不需要关闭服务器(至少在 Unix 上,在 Windows 上该文件可能正在使用中,而 Windows 可能不允许您删除它。刷新表可能会有所帮助)。

如果它的 InnoDB,只有 ISAM 或 MyISAM,请不要这样做。

如果它是 InnoDB,恐怕你将来可能会有转储/重新加载。

当然还有备份。始终有备份。

【讨论】:

  • 好吧,我想出了一个解决方法,对那个 db 做一个“mysqldump”,进入并编辑 sql 文件并删除与该表有关的所有内容,保存 sql 转储,删除db,然后重新导入 sql 转储。当我删除该表所在的db时,它也关闭了db,所以我不得不再次启动mysql,但至少我摆脱了它!
  • 哦,它是一个 InnoDB 表,所以我不能使用 MyISAM 删除文件系统文件的技巧 - 我已经这样做了几次 :-)
  • @Bruce:你所做的 mysqldump 就是我所说的“在你的未来进行转储/重新加载”的意思。我想应该更清楚一点。
  • 我以为这就是你的意思 :-) 非常感谢大家的帮助! stackoverflow 摇滚!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多