DB_DATABASE必须填纯数据库名(如cardgame),不可填SQL文件路径;否则PDO会尝试连接不存在的“数据库”而报错Unknown database;SQL文件需手动用mysql命令或工具导入已创建的库中。

DB_DATABASE 配置项不能写 SQL 文件路径,必须只填纯数据库名,比如 cardgame、lianxi_、dcat_admin。
常见错误是把 DB_DATABASE 写成类似:
DB_DATABASE = "D:\PHP\DGAPI\database01.sql" // ❌ 错!这是文件路径,不是库名
这样会导致 PDO 尝试连接一个叫 "D:\PHP\DGAPI\database01.sql" 的“数据库”,而它根本不存在,于是报错:
SQLSTATE[HY000] [1049] Unknown database 'D:\PHP\DGAPI\database01.sql'
正确做法分两步:
-
第一步:配置数据库名(仅名字)
在.env或config/database.php中写:DB_DATABASE=cardgame
或
立即学习“PHP免费学习笔记(深入)”;
'database' => 'cardgame',
-
第二步:手动导入 SQL 文件到该库中
使用命令行或工具将.sql文件导入到已创建的cardgame库里:mysql -u root -p cardgame < database01.sql
或用 phpMyAdmin、Navicat 等图形工具导入。
补充关键点:
- ✅ 数据库
cardgame必须提前在 MySQL 中创建好(可通过CREATE DATABASE cardgame CHARSET utf8mb4;) - ✅ 导入前确认 MySQL 用户对该库有读写权限
- ✅ 执行
SHOW DATABASES;可验证库是否存在 - ❌ 不支持在 ThinkPHP 配置里直接“执行 SQL 文件”——框架不处理文件加载逻辑
SQL 文件只是建表和初始化数据的脚本,不是数据库本身。ThinkPHP 连接的是数据库实例,不是 .sql 文件。



















