前提・実現したいこと
Laravelからmysqlに接続してマイグレーションファイルからテーブルを作成したい
発生している問題・エラーメッセージ
could not find driver (SQL: select * from information_schema.tables where table_schema = public and table_name = migrations and table_type = 'BASE TABLE')
試したこと
php.iniの
extension=pdo_mysql、extension=mysqliがコメントアウトされていないことの確認
extension_dir="C:\xampp\php\ext"が適切であるかの確認
php --iniとphpinfo()を比較し同じ場所のphp.iniを読み込んでいることの確認
.envファイル
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
がそれぞれ正しく設定されていることの確認
###試したコード
$dsn= 'mysql:dbname=データベース名;host=localhost'; $user = 'ユーザー名'; $password = 'パスワード'; $dbh = new PDO($dsn, $user, $password); $query = "SELECT * FROM テーブル名"; $stmt = $dbh->query($query); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo $row['列名'];
この形のコードではデータベースに接続し、データを取得することができました
Laravelで同様にPDOインスタンスを作成しているであろう
"C:\xampp\htdocs\プロジェクト名\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php"のコード
protected function createPdoConnection($dsn, $username, $password, $options) { if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) { return new PDOConnection($dsn, $username, $password, $options); } return new PDO($dsn, $username, $password, $options); }
のnew PDO($dsn, $username, $password, $options)の引数に直接値を入れるとmigrationは成功するがテーブルは何も作成されないという結果になりました。現在は元のコードに戻しています
補足情報(FW/ツールのバージョンなど)
Laravel Framework 6.20.17
PHP 7.4.11
Laravel Framework 8.31.0でも同様のエラーが発生しました
回答1件
あなたの回答
tips
プレビュー