0

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

谁能描述或指向一组表创建和选择查询,这些查询将允许我们测试这是否是 MySQL?理想情况下,这组查询仅适用于 MySQL,而在其他系统上会引发错误。

4

4 回答 4

4

尝试运行 MySQL 选择版本命令:

 SELECT VERSION()

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

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

于 2013-06-25T18:03:42.357 回答
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”。所以我的第一个猜测是您正在使用该产品。使用我上面提到的全局变量和函数来测试它。

于 2013-06-25T18:08:13.880 回答
1

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

于 2013-06-25T18:11:29.643 回答
0
select * from v$version;

这可能有效,但我不确定这是否特定于 MySQL,更不用说它是否适用于 MySQL - 我想我会分享。让我们知道它是否有效!

于 2013-06-25T17:56:39.703 回答