我有 debian 7.8 并使用 postfix、带有 roundcube 的 mysql 和 pure-ftpd-mysql。自 2014 年以来,所有功能均可与 mysql Ver 14.14 Distrib 5.5.40 完美配合。
我尝试将 mysql 更新到 5.7,以便在海量数据库上使用新的完整索引搜索 mysql 功能,但失败了。
将 mysql 服务器更新至 5.7 后,phpmyadmin 运行良好,但我必须添加:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
在conf中为了删除默认值错误。我的备份和表升级成功,我的所有网站都运行良好。
但是我在使用 postfix 和 pureftpd 时遇到了很大的问题。
即使 pureftpd 的所有数据库都在那里并且正常工作,也无法连接到 ftp。我检查了所有的配置,一切似乎都很好。
我可以成功连接到 roundcube 并查看我的旧电子邮件,但我无法发送或接收任何电子邮件。我的日志中收到此错误:
postfix/cleanup[27758]: warning: mysql:/etc/postfix/mysql_virtual_alias_maps.cf is unavailable. unsupported dictionary type: mysql
我尝试了很多方法,但都不起作用,最后我使用完整备份恢复了整个系统。现在一切都恢复正常,100% 完美,但使用的是 5.5 mysql。
也许我在此过程中做错了什么。我做了什么:
对我的系统、sql数据库和conf进行完整备份
apt-get remove mysql-server mysql-client mysql-common
apt-get autoremove
apt-get autoclean
apt-get install libaio1
dpkg -i mysql-apt-config_0.8.3-1_all.deb
apt-get update
apt-get intall mysql-server
service mysql start
恢复 mysql 数据库并升级表
谢谢您的帮助!
答案1
检查输出postconf -m
并查看是否列出了 mysql。如果没有,则使用:
sudo apt-get install postfix-mysql
这将为 postfix 添加 mysql 支持。
答案2
回答这个问题主要是因为它在谷歌搜索中排名很高:问题在于 sql 模式,特别是“STRICT_TRANS_TABLES”条目似乎会导致 mysql 5.7(或更高版本?)中的 postfix 虚拟查找出现问题。编辑您的 sql 模式以排除此问题,一切都会好起来的……
现在,至于为什么......我不清楚......我有一个理论,这是由于一列中的日期如 000-000-000 等,但更新所有这些后问题仍然存在。
编辑:问题在于表名“virtual_alias_domains”的选择。这似乎以保留字开头,因此必须完全引用。将我的查询更改为在表名周围使用反引号解决了该问题,即 select blah from virtual_alias_domains
etc