Wix Embedded MySQL启动失败:CommandFailedException报'Stream closed'
针对Wix Embedded MySQL单元测试在Ubuntu 20.04报错的解决方案
1. 检查AppArmor限制
Ubuntu的AppArmor安全模块可能限制了嵌入式MySQL的文件或网络操作,导致流关闭。
- 临时放宽规则测试:
sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld - 测试正常后,再考虑修改AppArmor规则添加永久例外。
2. 调整临时目录权限
Wix Embedded MySQL会在临时目录下载解压MySQL二进制包,Ubuntu的/tmp可能存在隔离限制:
- 显式指定一个当前用户有权限的临时目录,在代码配置中添加:
EmbeddedMysql.installationDir(new File("/home/your-user/mysql-tmp")) - 确保该目录权限全开(
chmod 777 /home/your-user/mysql-tmp,仅测试场景使用)。
3. 禁用SSL连接
Ubuntu环境可能默认强制SSL,而嵌入式实例未配置相关参数,导致连接中断:
- 在创建MysqldConfig时禁用SSL:
MysqldConfig config = MysqldConfig.aMysqldConfig(v8_0_24) .withSslMode(SslMode.DISABLED) .build();
4. 提高文件描述符限制
Ubuntu默认的文件描述符数量可能无法满足嵌入式MySQL的需求,导致流关闭:
- 临时提升当前会话的文件描述符限制:
ulimit -n 65535 - 若测试有效,可修改
/etc/security/limits.conf设置永久规则:* soft nofile 65535 * hard nofile 65535
5. 替换MySQL二进制包版本
默认下载的二进制包可能与Ubuntu 20.04存在兼容性问题,手动指定适配版本:
EmbeddedMysql.anEmbeddedMysql(MysqldConfig.aMysqldConfig(v8_0_30) // 选择确认兼容Ubuntu的版本 .withUser("sa", "") .build()) .start();
内容的提问来源于stack exchange,提问作者Leonardo Brambilla
相关产品推荐
相关产品推荐

