我面临着一个简单的问题。我不知道,这是MySQL还是phpMyAdmin的问题,但是每次我更新带有注释的存储过程时,注释都会被删除。我找到了很多讨论它但没有解决的论坛。有人有解决方案或想法吗?MySQL 5.7.17 x64,phpMyAdmin 4.6.6,Windows 7 x64,Apache 2.4 VC14 x64。
多谢。
编辑- 它仅在导入 sql 文件或通过 SQL 文本区域时发生。使用"钢笔工具"保留注释
要导入的示例存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_Test`$$
CREATE PROCEDURE `sp_Test`()
BEGIN
-- this comment will be removed
# this comment will be removed as well
/* this comment too */
SELECT 1;
END$$
DELIMITER ;
尝试了phpMyAdmin 4.7.0 - 同样的问题...
最简单的解决方案是切换到另一个应用程序 - Adminer (www.adminer.org),它只包含一个文件,速度非常快,不做任何我不想做的事情,并且可以做 phpMyAdmin 可以做的所有事情。这么久了 phpMyAdmin,再也不会了。
好的,现在我肯定知道了,这是phpMyAdmin的一个错误。我报告了两个错误:
- 导入过程中和 SQL 文本区域中的注释将被删除
- 在导出过程中删除注释后的新行,这会导致过程的源代码被破坏:
所以,这个:
-- comment
SELECT 1;
变成这样:
-- comment SELECT 1;
这些是指向报告的错误和他们制作的两个补丁的链接:
- https://github.com/phpmyadmin/phpmyadmin/issues/11717
- https://github.com/phpmyadmin/phpmyadmin/issues/13139
第二个将是 4.7.1 版本的一部分,第一个尚未审核(截至 2017 年 3 月 4 日 9:25),但两个补丁都可以工作。
谢谢大家的帮助。
您的问题很常见,并且有一个简单的解决方案。 您应该将注释放在程序正文中,即BEGIN
和END
之间有什么。代码的其余部分是创建过程的说明,运行它们后将丢失。
注释的语法为:
- /* ..... */
-
--内容
BEGIN /*Comments*/ --Comments END
如果这不起作用,请尝试以下操作:
在PhpMyAdmin
中,选择与您相关的数据库后,单击左侧的wp_comments
表。
这将显示与您的评论相关的所有记录。如您所见,每个字段都附加了许多字段。如果滚动到右侧,您将看到一个名为comment_approved
的字段,其值为1
或0
Pending
注释的值为 0,已批准的注释的值为 1。因此,要删除WordPress中的所有待处理评论,我们只需要指定comment_approved
值为1
的记录,即可阻止它删除它们。
还要检查是否存在清除wp_comments
表的查询。