1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Symfony5のチュートリアルに従ってPage作ろうとしたらAn exception occurred in driver: could not find driver

Last updated at Posted at 2021-06-16

エラーでた

とりあえずWSL2のUbuntuにチュートリアルに従ってLuckyController.phpを書いて、

$ symfony server:start -d

サーバを起動した。
dockerは使っていないので、UbuntuのIPアドレスでないとアクセスできないので、

$ ip a

とかして、eth0に記載されてるIPアドレス確認して、
http://xxx.xxx.xxx.xxx.8000
にアクセス。
表題の通り、
"An exception occurred in driver: could not find driver"
などとエラーが出た。

※ ipコマンド叩けない場合は

$ sudo apt-get install net-tools

net-toolsとかインストールのこと

原因

projectのスケルトンインストールした時点でバンドルされている"Doctrine Migrations"がdevモードでは実際に接続されるのだとかなんだとか。
実際に、.envの初期値を確認すると

.env
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"

###< doctrine/doctrine-bundle ###

このように、postgresqlに接続するようになっている。

対応

Doctrine Migrationsを削除する方法もある見たいだけど、世界に挨拶したいだけで構成を治すのは面倒なので、
一旦、SQLiteで逃げておきたい。

.env
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
- DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
+ DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
###< doctrine/doctrine-bundle ###

物理的にファイルを生成しないと解消されないので、symfonyコマンドで以下のようにDBを作成

$ php bin/console doctrine:database:create

※ なんかエラー出る場合、php-sqliteがインストールできてないので以下の通りインストールすること

$ sudo apt-get install php-sqlite3

これで解消された。

参考:
Symfonyサーバーの起動時のPostgreSQLエラー
[PHP]Symfony 4 とデータベースを使ったCRUDアプリケーションの作り方

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?