ybu*_*ron 3 mysql postgresql compatibility drupal
我有一个复杂的查询,因为我需要我的模块在mysql和postgres上工作,我需要编写它的两个版本.
不幸的是,我不知道如何检查我使用的db是mysql还是postgres,以了解使用哪个查询.你知道函数是否可以返回这个值吗?
正如@kordirko所说,一种选择是查询服务器版本:SELECT version();将同时适用于MySQL和PostgreSQL,但不是大多数 其他数据库 引擎.
解析版本字符串总是有点脆弱,MySQL只返回一个版本号,就像5.5.32Wheras PostgreSQL返回的那样PostgreSQL 9.4devel on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8), 64-bit.你会怎么做,如果你连接到PostgreSQL- 兼容的数据库,EnterpriseDB公司一样的Postgres Plus或一个MySQL- 兼容的数据库?
为此目的DatabaseConnection::databaseType使用Drupal函数更安全.这避免了对数据库的往返查询,将对无法理解/接受的数据库起作用SELECT version(),并且将避免解析版本字符串的需要.
你会发现这个错误报告很有用; 它表明正确的用法是Database::getConnection()->databaseType().
(我从来没有使用Drupal,我只是搜索过这个).