Ubuntu服务器安装Roundcube执行SQL报错Table 'session'已存在
错误原因
该报错是因为你指定的roundcube数据库中已经存在session表,你执行的初始SQL脚本包含创建该表的语句,重复创建触发冲突,导致导入中断。通常是你之前已经执行过一次导入操作,或是Roundcube初始化流程已自动生成了相关库表。
解决方案
根据你的数据库是否有有效数据,选择对应方案处理:
场景1:现有roundcube库无有效数据,可直接重置
- 先登录MySQL删除旧库,重新创建空的roundcube库:
执行命令进入MySQL交互终端:
终端内依次执行以下SQL语句:sudo mysql -u root -pDROP DATABASE IF EXISTS roundcube; CREATE DATABASE roundcube DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON roundcube.* TO '替换为你的roundcube数据库用户名'@'localhost'; FLUSH PRIVILEGES; EXIT; - 修正你原命令的参数错误,重新执行导入即可:
注意:MySQL密码参数为sudo mysql -u 替换为你的roundcube数据库用户名 -p roundcube < /var/www/roundcube/SQL/mysql.initial.sql-p而非-passwd,-p后不空格直接写明文密码,或留空执行后再输入密码更安全
场景2:现有roundcube库已有有效数据,不可删除重建
- 先备份当前roundcube库避免数据丢失:
sudo mysqldump -u 替换为你的roundcube数据库用户名 -p roundcube > roundcube_backup_$(date +%Y%m%d).sql - 打开
/var/www/roundcube/SQL/mysql.initial.sql文件,将所有CREATE TABLE语句修改为CREATE TABLE IF NOT EXISTS,已存在的表会自动跳过创建,不会触发冲突。 - 也可以直接注释掉SQL文件中第8行开始的
session表创建语句,再执行导入即可。
内容的提问来源于stack exchange,提问作者Abhijeet Singh Tomer
相关产品推荐
相关产品推荐

