我在配置文件中设置了 driverOptions ,如教条DBAL文档中所述。
但这会产生错误
1/1 InvalidConfigurationException:“doctrine.dbal.connections.pdoDevCon”下无法识别的选项“driverOptions”
我的配置文件是
dbal:
default_connection: pdoDevCon
connections:
pdoDevCon:
driver: %dev_database_driver% # <
host: %dev_database_host% # |
port: %dev_database_port% # | Defined in
user: %dev_database_user% # |
password: %dev_database_password% # <
charset: UTF8
driverOptions: {3: 2}
mapping_types:
enum: string
set: string
orm:
auto_generate_proxy_classes: %kernel.debug%
pdoDevCon:
connection: pdoDevCon
mappings:
AcmeDemoBundle: ~
AcmeHelloBundle: ~
我使用 PDO :: ATTR_ERRMODE作为3 PDO :: ERRMODE_EXCEPTION为2 ,即使我使用字符串它也不起作用。
答案 0 :(得分:7)
来自http://symfony.com/doc/master/reference/configuration/doctrine.html#doctrine-dbal-configuration
DoctrineBundle支持默认Doctrine驱动程序的所有参数 接受,转换为Symfony的XML或YAML命名标准 强制实施即可。有关更多信息,请参阅Doctrine DBAL文档。
symfony yml配置文件中没有driverOptions
,只有options
答案 1 :(得分:3)
我没有使用Symfony,但我使用的是Doctrine\DBAL\DriverManager::getConnection()
。
我不得不支持DriverManager
并跳这首歌并跳舞以指定连接超时(ATTR_TIMEOUT
):
function buildDbConn($config, $timeout) {
$params = $config->toArray();
$params['driverOptions'] = [
PDO::ATTR_TIMEOUT => intval($timeout),
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$driver = new Doctrine\DBAL\Driver\PDOMySql\Driver;
return new Doctrine\DBAL\Connection($params, $driver);
}
我总是需要一个pdo_mysql驱动程序,这可以配置。
答案 2 :(得分:0)
您可以从yml设置此选项。 事实是您需要使用const值:
选项参数将被复制为驱动程序选项,不用担心
整数是2
选项 2:10
为我工作i。 Symfony 3.4和4.2