由于一些组织上的怪异,我的工作团队现在对随机数据库的访问有些有限,但我们并不完全确定应该使用什么语法。在理想的世界中,我们希望它是 MySQL。
谁能描述或指向一组表创建和选择查询,这些查询将允许我们测试这是否是 MySQL?理想情况下,这组查询仅适用于 MySQL,而在其他系统上会引发错误。
由于一些组织上的怪异,我的工作团队现在对随机数据库的访问有些有限,但我们并不完全确定应该使用什么语法。在理想的世界中,我们希望它是 MySQL。
谁能描述或指向一组表创建和选择查询,这些查询将允许我们测试这是否是 MySQL?理想情况下,这组查询仅适用于 MySQL,而在其他系统上会引发错误。
尝试运行 MySQL 选择版本命令:
SELECT VERSION()
http://dev.mysql.com/doc/refman/5.0/en/installation-version.html
它必须是表创建和/或选择查询还是上述工作?
每个 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”。所以我的第一个猜测是您正在使用该产品。使用我上面提到的全局变量和函数来测试它。
您可以在sqlfiddle上测试您的 DDL 语句,然后在 MySQL 上运行它们,这应该可以解决您的大部分 SQL 问题。或者,使用hibernate或类似的 ORM,根本不用担心 SQL。
select * from v$version;
这可能有效,但我不确定这是否特定于 MySQL,更不用说它是否适用于 MySQL - 我想我会分享。让我们知道它是否有效!