安装vtigercrm 7.3时出现SQL MODE错误代码该如何解决
解决VtigerCRM 7.3安装时MySQL sql_mode配置报错问题
该报错是VtigerCRM 7.3的运行环境校验规则导致,默认MySQL的sql_mode会包含ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES等额外参数,不符合VtigerCRM的要求,按以下步骤修改即可:
步骤1:查看当前sql_mode配置
执行以下命令登录MySQL并查询当前配置:
mysql -u root -p -e "SELECT @@sql_mode;"
输入数据库root密码后即可看到当前生效的sql_mode值,确认存在多余参数后执行后续修改操作。
方案1:临时修改(重启MySQL后失效,适合快速验证安装)
- 登录MySQL命令行:
mysql -u root -p,输入root密码完成登录 - 执行全局配置修改命令:
SET GLOBAL sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; - 执行当前会话配置修改命令:
SET SESSION sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; - 退出MySQL命令行,重新启动VtigerCRM安装流程即可
方案2:永久修改(重启MySQL后依然生效,适合生产环境)
- 找到对应系统的MySQL配置文件:
- Linux系统通常为
/etc/my.cnf、/etc/mysql/mysql.conf.d/mysqld.cnf - Windows系统通常为MySQL安装目录下的
my.ini
- Linux系统通常为
- 打开配置文件,找到
[mysqld]配置段,新增或修改对应参数行:sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION - 保存配置文件后重启MySQL服务:
- Linux Systemd环境执行:
systemctl restart mysqld或systemctl restart mysql - Windows环境可在服务管理器找到MySQL服务右键重启,或执行
net stop mysql && net start mysql
- Linux Systemd环境执行:
- 重启完成后重新执行步骤1的查询命令,确认配置生效后再启动VtigerCRM安装
特殊场景说明
MySQL 8.0及以上版本适配
MySQL 8.0开始已经移除了NO_AUTO_CREATE_USER参数,上述配置改为以下内容即可:
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Docker部署的MySQL适配
启动容器时直接追加sql_mode参数即可:
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=你的密码 mysql:5.7 --sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如果使用docker-compose部署,在mysqld服务下新增command配置:
services: mysql: image: mysql:5.7 command: --sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # 其余配置保持不变
内容的提问来源于stack exchange,提问作者DHX07
相关产品推荐
相关产品推荐

