私はsymfony 3を試してみて、Doctrine ORMを使用してデータベースにデータを挿入しています。クエリを実行しようとすると
$customer = new Customer();
$customer->setAddress('Some Address');
$customer->setName('Customer 1');
$order->setQuantity('100');
$order->setDate(date('Y-m-d'));
$order->setCustomer($customer);
$em = $this->getDoctrine()->getManager();
$em->persist($customer);
$em->persist($order);
$em->flush();
しかし、それは例外を返します:
Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred in driver: could not find driver" at /home/hei/Sites/practice/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 121
Parameters.yml:
parameters:
database_Host: 127.0.0.1
database_port: null
database_name: practice
database_user: root
database_password: null
Config.yml
doctrine:
dbal:
driver: pdo_mysql
Host: '%database_Host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
また、拡張機能が有効になっていて、php -mおよびphpinfo()でロードされているかどうかも確認します。 PDOおよびPDO_Mysqlが有効になっていると表示されます。
次に、php.iniに次の2行を追加します。
extension=pdo.so
extension=pdo_mysql.so
しかし、私はまだ同じPDO例外を受け取りました。
私のOSはUbuntu 17.1です
OSを再起動するだけで問題を解決できました。
システムにphp-mysqlパッケージがないと思います。コマンドを使用してパッケージをインストールします
Sudo apt-get install php-mysql
これで問題が解決することを願っています。
この問題を解決するには、Apacheも再起動する必要があると思います。 php-mysqlのインストール後、次のコマンドを使用してApacheを再起動します
Sudo service Apache2 restart.
私の場合(Windowsの場合) mysql driver をインストールしました。
私にとっては、これらの2行を/etc/php/5.6/cli/php.ini
に追加しました。
/ usr/lib/php/5.6/php.ini-development
extension=pdo.so
extension=pdo_mysql.so
それから:
Sudo service Apache2 restart
その後、エンティティをデータベースにフラッシュできました。
これが将来、他の誰にも役立つことを願っています。
まず、MySQLのポート番号をnull
から3306
に変更する必要があります。それでおしまい。 MySQLパスワードを持っていないので、何も書いていません。
良い一日を過ごしてください。
WAMPServerおよびおそらく他の構成では、個別のphp.ini
PHPのコマンドライン。正しい.ini(理想的には両方のini)でモジュールを有効にしていることを確認してください
私のシステム(Fedora)では、php-mysqlndというパッケージが必要でした。以下を実行してインストールしました:
dnf install php-mysqlnd