phpEnv 的 my.ini 通常位于安装目录下的 mysql 子文件夹中,如 C:\phpEnv\mysql\my.ini;若未找到,可通过右键主程序“打开文件所在位置”逐级查找,或运行 mysql -u root -p -e "SHOW VARIABLES LIKE 'config_file';" 获取真实路径。

phpEnv 是 Windows 下的绿色 PHP 集成环境,MySQL 默认引擎由其内置的 MySQL 实例决定,不通过 phpEnv 图形界面直接修改。改默认引擎必须手动编辑 MySQL 配置文件并重启服务,否则 CREATE TABLE 不带 ENGINE= 时仍用旧引擎。
怎么找到 phpEnv 的 my.ini 配置文件
phpEnv 不像 XAMPP 或宝塔那样暴露配置路径,它的 MySQL 配置文件通常藏在安装目录下的子路径中:
- 先打开 phpEnv 安装目录(例如
C:\phpEnv),搜索my.ini文件 - 常见位置有:
C:\phpEnv\mysql\my.ini、C:\phpEnv\mysql-5.7\my.ini或C:\phpEnv\mysql-8.0\my.ini(取决于你启用的是哪个 MySQL 版本) - 如果没找到,可右键 phpEnv 主程序 → “属性” → “打开文件所在位置”,再向上级目录逐层查找
mysql*文件夹 - 确认方法:启动 phpEnv 后,打开命令行执行
mysql -u root -p -e "SHOW VARIABLES LIKE 'config_file';",它会返回真实加载的配置路径(但需确保 MySQL 已运行)
修改 default-storage-engine 后必须重启 MySQL 服务
找到 my.ini 后,用记事本或 VS Code 打开,在 [mysqld] 段落末尾添加或修改这一行:
default-storage-engine = InnoDB
或切换为 MyISAM:
立即学习“PHP免费学习笔记(深入)”;
default-storage-engine = MyISAM
注意:
- 不要写成
default_storage_engine(下划线写法在旧版 MySQL 中无效,phpEnv 多用 5.7,只认短横线) - 若该行被注释(前面有
#或;),需删掉注释符号 - 改完保存,回到 phpEnv 控制面板,先点击 MySQL 行的“停止”,再点“启动”——仅“重启”按钮有时不触发配置重载
- 验证是否生效:进 phpMyAdmin 或命令行执行
SHOW VARIABLES LIKE 'default_storage_engine';,返回值应与你设置的一致
ALTER TABLE 切换单表引擎时 MyISAM 报错 ERROR 1286 怎么办
即使配置改了,默认引擎生效,也不代表所有引擎都已启用。执行 ALTER TABLE users ENGINE = MyISAM; 报 ERROR 1286 (42000): Unknown storage engine 'MyISAM',说明 MyISAM 被编译禁用或配置关闭。
解决步骤:
- 先运行
SHOW ENGINES;,检查MyISAM行的SUPPORT列是不是DISABLED或NO - 如果是
DISABLED,在my.ini的[mysqld]下加一行:skip-innodb不能加(会冲突),正确做法是确保没写disabled_storage_engines = MyISAM - MySQL 5.7 默认启用 MyISAM,但某些精简版 phpEnv 可能移除了它;此时只能换用官方 MySQL 或改用 InnoDB
- 若只是临时测试,可用
CREATE TABLE ... ENGINE=MyISAM显式指定,绕过默认引擎限制
为什么 Laravel 迁移或 PDO 插入后还是 InnoDB
因为框架或驱动层显式指定了引擎,覆盖了 MySQL 的默认设置。例如 Laravel 的迁移里写了 $table->engine = 'InnoDB';,或 PDO 连接时设置了 PDO::ATTR_EMULATE_PREPARES = true 并在建表 SQL 中硬编码了 ENGINE=InnoDB。
这类情况改 my.ini 没用,必须:
- 检查迁移文件里有没有
->engine('InnoDB')或类似写法 - 查 ORM 配置(如 Laravel 的
config/database.php中mysql.engine项) - 抓取实际执行的 SQL(用
DB::enableQueryLog()或 MySQL general_log),确认建表语句是否含ENGINE=
phpEnv 本身不干预 SQL 生成逻辑,它只提供 MySQL 运行时环境。引擎最终由你写的 SQL 或上层框架决定,配置文件只影响“裸写 CREATE TABLE”这种最基础场景。



















