执行php yii migrate命令时出现PDO驱动或其他报错如何解决?
运行
php yii migrate报错的排查思路与解决方法 前置通用排查步骤
- 确认CLI模式PHP加载的配置文件路径:执行
php --ini查看加载的php.ini地址,避免和web端使用不同配置导致扩展加载不一致 - 确认数据库服务正常运行:验证配置的数据库主机、端口可正常连接,无防火墙、端口映射问题
- 校验Yii数据库配置:检查
config/db.php或对应环境的配置文件,确认数据库名、用户名、密码、字符集、连接地址参数无拼写错误,配置的数据库账号具备对应库的操作权限
PDO驱动类错误针对性解决
常见报错标识:could not find driver、PDOException 连接失败类提示
- 先执行
php -m查看CLI模式已加载的PHP扩展,确认对应数据库的PDO扩展已存在:MySQL对应pdo_mysql,PostgreSQL对应pdo_pgsql,SQLite对应pdo_sqlite - 扩展未安装时,按对应操作系统安装:
- Debian/Ubuntu系列:执行
sudo apt install php<你的PHP版本>-pdo-mysql,例如PHP8.2版本对应sudo apt install php8.2-pdo-mysql - RHEL/CentOS系列:执行
sudo yum install php-pdo_mysql - Windows环境:打开查询到的php.ini文件,删除
extension=pdo_mysql行前的分号注释,保存后重启终端生效
- Debian/Ubuntu系列:执行
- 安装完成后重新执行
php -m确认扩展加载成功,再运行迁移命令
其他常见异常解决
- 权限拒绝错误:提示Access denied for user 'xxx'@'xxx'
首先确认配置文件中的账号密码填写正确,之后登录数据库执行授权命令,MySQL环境示例:GRANT ALL PRIVILEGES ON 目标数据库名.* TO '配置的用户名'@'访问IP' IDENTIFIED BY '对应密码'; FLUSH PRIVILEGES; - 数据库不存在错误:提示Unknown database 'xxx'
手动创建对应数据库即可,MySQL环境示例:CREATE DATABASE 目标库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 迁移文件语法错误:提示syntax error, unexpected xxx类信息
执行php -l 迁移文件完整路径检测对应迁移文件的PHP语法,修正漏写符号、括号不匹配等问题即可 - 迁移锁冲突:提示Another migration is already running
确认无其他迁移进程在执行的前提下,删除项目runtime目录下的migration.lock文件后重试即可
内容的提问来源于stack exchange,提问作者Mewoabi Joe
相关产品推荐
相关产品推荐

