我如何检查表mysql.proc是否存在

时间:2011-03-02 11:10:52

标签: mysql

我正在开发一个WPF应用程序,如果安装了MySQL,它将安装, 所以在安装之前我想检查mysql.proc表是否存在。 我用Google搜索并最终得到了一个查询

select * from information_schema.Tables 
   where Table_schema = Schema() and Table_Name = 'mysql.proc'

此查询返回一个空行。

我也尝试过简单的select语句 select * from mysql.proc, 并返回一个包含所有存储过程名称的表,但如果该表不存在则会在c#代码中抛出异常。

那么有什么办法可以从c#中激活一个查询并获取一个布尔值,具体取决于mysql.proc表是否存在?

1 个答案:

答案 0 :(得分:1)

试试SHOW TABLES FROM mysql LIKE 'proc'。如果没有结果行,则该表不存在。如果有一行,则表存在。请注意,此方法不能跨RDBMS移植,但这似乎不是您的担忧。

对于您的第一个查询,SCHEMA()返回默认数据库,因此如果它不是“mysql”,则查询将失败。同样,Table_Name列中的数据不包含数据库名称,因此与'mysql.proc'相比总是会失败。