Larvel:PHP Artisan迁移引发PDO异常:找不到驱动程序(Postgres)
OS:Ubuntu 16.10 服务器:Nginx DB:PostgreSQL 9.5.4 Laravel 5.4 尝试执行我的数据库迁移,但Larvel:PHP Artisan迁移引发PDO异常:找不到驱动程序(Postgres),php,postgresql,laravel,nginx,pdo,Php,Postgresql,Laravel,Nginx,Pdo,OS:Ubuntu 16.10 服务器:Nginx DB:PostgreSQL 9.5.4 Laravel 5.4 尝试执行我的数据库迁移,但php artisan migrate引发以下错误: [照亮\数据库\查询异常] 找不到驱动程序:(SQL select*from information_schema.tables,其中tables_schema=username,table_name=migrations) 然后是第二条消息,声明 [例外情况] 找不到驱动程序 我已经做了以下工作: 验
php artisan migrate
引发以下错误:
[照亮\数据库\查询异常]
找不到驱动程序:(SQL select*from information_schema.tables,其中tables_schema=username,table_name=migrations)
然后是第二条消息,声明
[例外情况]
找不到驱动程序
我已经做了以下工作:
php-I
时,我得到的PDO部分的输出是
PDO支持=>已启用
PDO驱动程序=>pgsql
pdo_pgsql部分产生
PostgreSQL(libpq)版本=>9.5.4
模块版本=>7.0.15-0ubuntu0.16.10.4
pgsql部分返回
PostgreSQL(libpq)版本=9.5.4
PostgreSQL(libpq)=>x86_64-pc-linux-gnu上的PostgreSQL 9.5.4,由gcc(Ubuntu 6.1.1-11ubuntu12)6.1.1 20160805编译,64位多字节字符
支持=>已启用
SSL支持=>已启用
活动持久链接=>0
活动链接=>0
但尽管如此,仍然得到了同样的错误。我认为可能是权限问题,但以root或www data的身份运行该命令会产生相同的结果。您需要定义.env文件 在.env文件中,您需要指定正在使用的数据库(MySQL、SQLite、Postgres),并指定DB用户名和密码
APP_ENV=local
APP_KEY=base64:gqaCpjbEfukDr5As7EnrqRzi5PSho1rOS/q2H0E+HOs=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=YOUR_DB_NAME
DB_USERNAME=YOUR_USERNAME
DB_PASSWORD=YOUR_PASSWORD
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
在处理迁移时,运行这些命令总是很好的
composer dump-autoload
php artisan cache:clear
php artisan view:clear
已解决: 在此场景中,请确保已运行 php artisan缓存:清除 php artisan配置:缓存
我认为我已经在每一个关键的步骤都这样做了,但是再次运行这两个命令可以让我进行迁移并使站点正常运行。不过,感谢刘易斯4U的帮助。我也经历过同样的情况, 按顺序尝试以下操作:
1) install the postgre extensions for php, those are:
php-(YOUR_VERSION)-pgsql, and php-pgsql.
2) enable pgsql extensions in your php.ini file, basically,
uncomment the the extensions.
3) restart the apache server(or nginx).
4) check that extensions are enable using phpinfo() or any else tool.
5) set a password for (in instance) the postgres user in postgreSQL
server, this is a very important step.
登录到psql shell:
sudo su - postgres
\password postgres
输入密码并确认
现在,设置.env文件并重试。您应该安装PHP pdo
sudo apt upgrade
sudo apt install php-pgsql
如果你想让我在teamviewer上帮你,你可能犯了一些小错误,但是如果你看不到你是否在使用php fpm,除了重新启动web服务器(nginx/apache)之外,你总是很难判断出什么是错的