测试我使用的是MySQL语法?

时间:2013-06-25 17:55:15

标签: mysql sql unit-testing syntax

由于一些组织上的怪异,我的工作团队现在对随机数据库的访问权限有限,但我们并不完全确定我们应该使用它的语法。在一个理想的世界里,我们希望它是MySQL。

任何人都可以向我描述或指向一组表创建和选择查询,以便我们测试这是否是MySQL?理想情况下,这组查询将在MySQL上运行 ,在其他系统上引发错误。

4 个答案:

答案 0 :(得分:4)

尝试运行MySQL select version命令:

 SELECT VERSION()

http://dev.mysql.com/doc/refman/5.0/en/installation-version.html

它必须是表创建和/或选择查询还是上述工作?

答案 1 :(得分:1)

每个RDBMS都有各自的协议和客户端库。一个RDBMS的客户端通常无法连接到错误的RDBMS品牌。

我建议您使用MySQL客户端测试连接。如果这不起作用,那就不是MySQL。 : - )


评论:

MySQL不会根据权限限制语法,因此您永远不会遇到语法错误。即使您没有访问任何数据库或表的权限,也可以调用大多数内置函数。我证实了这一点:

mysql> grant usage on *.* to 'dummy'@'%';  /* minimal privilege */

$ mysql -udummy

mysql> select version();
+-----------------+
| version()       |
+-----------------+
| 5.5.31-30.3-log |
+-----------------+

如果您在该语句中出现语法错误,我会说您实际上已连接到不具有VERSION()函数的其他RDBMS。

例如,Microsoft SQL Server有一个@@VERSION全局变量,它们具有SERVERPROPERTY()功能,可用于查询服务器版本和其他信息。 (参见文档链接。)

根据我的经验,使用Microsoft SQL Server的网站很少调用它的Microsoft SQL Server,他们错误地将其称为“SQL”甚至是“MySQL”。所以我的第一个猜测就是你正在使用那个产品。使用我上面提到的全局变量和函数来测试它。

答案 2 :(得分:1)

您可以在sqlfiddle上测试您的DDL语句,然后在MySQL上运行它们,这应该解决您的大多数SQL问题。或者,使用hibernate或类似的ORM,根本不用担心SQL。

答案 3 :(得分:0)

select * from v$version;

这可行,但我不确定这是否特定于MySQL,更不用说,如果它甚至可以在MySQL中运行 - 我想我会分享。如果有效,请告诉我们!