Что мне нужно
я проверил php -m
PDO_ODBC
ODBC
здесь ссылка я следую https://gist.github.com/johnkary/6481664
а.) config.yml
doctrine: dbal: default_connection: default connections: default: driver: "%database_driver%" host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: "%database_charset%"
b.) parameter.yml
# If connecting via SID parameters: database_driver: oci8 database_host: abc database_port: '1521' database_name: test database_user: aa database_password: aa database_charset: AL32UTF8 mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null locale: en secret: zzzz
гр.) services.orcale.yml
services: acme.doctrine.dbal.events.oracle_session_init.listener: class: %doctrine.dbal.events.oracle_session_init.class% tags: - { name: doctrine.event_listener, event: postConnect } acme.doctrine.dbal.oracle_platform.type_mapping.listener: class: Acme\MisBundle\Listener\OracleDoctrineTypeMappingListener tags: - { name: doctrine.event_listener, event: postConnect }
затем запустите базу данных symfony cmd
php bin/console doctrine:database:create
ошибка:
cannot create database test for connection named default. notice: undefined index dbname
У меня есть googled день, но я думаю, что есть несколько разработчиков, которые работают с symfony2 и oracle.
я сделал простой скрипт php, который работает для проверки соединений
$userName = ""; $password = ""; $dtabasePort = "1521"; $serverName = ""; $databaseName = "testingdb"; $c = oci_connect($userName, $password, '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ) (SID =)))'); print_r($c);
вывод
Resource id #3
tsnames.ora
test= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = sss)(PORT = 1521)) (CONNECT_DATA = (SID = test)) )
Я работал с sf3 и mysql, но я стал новым для оракула, поэтому я не знал, как подключить oracle db с symfony.
пожалуйста, дайте некоторое решение, где я сделал неправильно.
Может ли кто-нибудь предложить поэтапно, как лучше всего использовать db-s оракула с sf2 / 3.
ссылка github относится к той же проблеме, с которой сталкивается https://github.com/doctrine/dbal/issues/1564
Я также изменил файл parameter.yml
parameters: database_driver: oci8 database_user: <user> database_password: <password> database_charset: WE8MSWIN1252 database_name: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))
то ошибка, которую вы запросили параметр небытия «database_host»,
последнее и окончательное решение, которое я пробовал, но didn "t работал, я думаю, там ошибка в sf2 для oracle
parameters: database_driver: oci8 database_host: database_port: 1521 database_name: database_user: database_password: domain_name: doctrine: dbal: default_connection: default connections: default: driver: "%database_driver%" host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 persistent: true orm: auto_generate_proxy_classes: "%kernel.debug%" auto_mapping: true services: pdo: class: PDO arguments: - "oci8:Server=%database_host%;Database=%database_name%" - "%database_user%" - "%database_password%" calls: - [setAttribute, [3, 2]] # \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION session.handler.pdo: class: ESERV\MAIN\FrameworkChanges\MtlPdoSessionHandler arguments: ["@pdo", "%pdo.db_options%"]
вот что я использую для подключения MSSQL: https://github.com/realestateconz/MssqlBundle
config.yml:
doctrine: dbal: types: string: ***\BacsManagementBundle\Type\StringType default_connection: default connections: default: host: "%database_host%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver mapping_types: enum: string string: string
Надеюсь, поможет.