注意:实际上有两个问题......
当我使用mysqldump
二进制文件转储mysql数据库时,我得到一个包含(以及其他行)的文件:
CREATE DATABASE /*!32312 IF NOT EXISTS*/
{MyDatabase的{1}}
我搜索了Google和MySql参考,但我找不到那些/ *!32312的意思,以及它们是如何工作的。我只能猜测它们是有条件的评论。像例如如果构建> 32312,执行“IF NOT EXIST”?
任何人都可以对此有所了解吗?
我想知道这个的原因是因为我无法在C#客户端中使用转储内容作为1查询执行恢复。使用此代码:
/*!40100 DEFAULT CHARACTER SET utf8 */;
我是否真的必须启动mysql作为使用命令行参数恢复转储的进程?因为我真的想在C#客户端中使用它作为SQL查询来完成转储的恢复,因为它比控制mysql二进制文件输出和退出代码等更方便......
答案 0 :(得分:3)
它们确实是版本特定的评论,如Comment syntax中所述。
这些注释只允许在服务器支持时执行语句的可选部分。
/*!40100 DEFAULT CHARACTER SET utf8 */;
表示仅当MySQL服务器的版本为4.01.00或更高版本时才会执行此部分。
答案 1 :(得分:0)
正如问题的原始海报所述:
使用Query = Regex.Replace(QueryOrFilePath, @"(?:\/\*!\d+\s)|(?:\*\/)", @"", RegexOptions.Multiline);
将删除所有与注释和版本类似的注释,并仅将查询保留在特定于版本的注释中。
如果您确定在版本兼容的数据库上执行查询,则非常有用。