部分用户在虚拟主机间迁移 Discuz! 论坛系统时遇到问题。在简单地复制、粘贴文件之后,访问论坛首页和 Ucenter 会出现如下错误:
UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE name='noteexists2′ Error:SELECT command denied to user ‘数据库‘@'IP地址' for table ‘pre_ucenter_vars' Errno:1142
这个问题出现的原因,是迁移之后没有正确配置数据库信息。
解决方案
需要在3个配置文件中修改数据库信息:
在本文中,标注有星号的地方是您需要留意修改的。星号之前是示例内容,请根据实际填写。
1、Discuz 论坛配置
位置在 网站目录/config/config_global.php
// ---------------------------- CONFIG DB ----------------------------- // $_config['db'][1]['dbhost'] = '127.0.0.1***数据库地址,一般为127本地***'; $_config['db'][1]['dbuser'] = 'runyun***数据库用户名***'; $_config['db'][1]['dbpw'] = '114514***数据库密码***'; $_config['db'][1]['dbcharset'] = 'utf8mb4'; $_config['db'][1]['pconnect'] = 0; $_config['db'][1]['dbname'] = 'runyundiscuz***数据库名***'; $_config['db'][1]['tablepre'] = 'discuz_***数据表前缀,带下划线***'; $_config['db']['slave'] = ''; $_config['db']['common']['slave_except_table'] = ''; $_config['db']['common']['engine'] = 'innodb';
2、Discuz Ucenter 配置
位置在 网站目录/config/config_ucenter.php
define('UC_DBHOST', '127.0.0.1***数据库地址,一般为127本地***'); define('UC_DBUSER', 'runyun***数据库用户名***'); define('UC_DBPW', '114514***数据库密码***'); define('UC_DBNAME', 'runyundiscuz***数据库名***'); define('UC_DBCHARSET', 'utf8mb4'); define('UC_DBTABLEPRE', '`runyundiscuz***数据库名***`.discuz_ucenter_***数据表前缀,带下划线和ucenter***'); define('UC_DBCONNECT', 0);
请额外留意:UC_DBTABLEPRE 要同时修改数据库名和数据表前缀,例如下面这样。
define('UC_DBTABLEPRE', '`runyundiscuz`.discuz_ucenter_');
3、Ucenter Server 配置
位置在 网站目录/uc_server/data/config.inc.php
define('UC_DBHOST', '127.0.0.1***数据库地址,一般为127本地***'); define('UC_DBUSER', 'runyun***数据库用户名***'); define('UC_DBPW', '114514***数据库密码***'); define('UC_DBNAME', 'runyundiscuz***数据库名***'); define('UC_DBCHARSET', 'utf8mb4'); define('UC_DBTABLEPRE', 'discuz_ucenter_***数据表前缀,带下划线和ucenter***');
完成上述三个文件的修改后,即可完成迁移。