在BAE上安装完Discuz后,遇到No Database Selected的错误,如何破???
b****s · b****s 发布于2015-09-25 16:48 浏览:3914 回复:1

之前有人在BAE使用Discuz遇到问题,安装完之后登录的时候,遇到No Database Selected这个错误:

UCenter info: MySQL Query Error


SQL:SELECT value FROM [Table]vars WHERE name='noteexists1'

Error:No Database Selected

Errno:13003


截个图:




“No Database Selected”应该是没有选定数据库,通常这是在连接MySQL的时候会做的动作。

看了一下Discuz的代码(我看的是 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip ,也可以在 http://www.discuz.net/thread-3570835-1-1.html 里找到 ),感觉是 uc_client/model/base.php 里的 base:init_db() 函数有问题。连接数据库的动作在第 79 行:

                $this->db->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, '', UC_DBCHARSET, UC_DBCONNECT, UC_DBTABLEPRE);

这里的第4个输入参数应该就是数据库的名字,但是原始的代码里这里是个空字符,即 '' ,明显是有问题的。把这个空串替换成 UC_DBNAME 之后问题解决了。



后来又搜了一下,发现其实百度经验上对这里是有描述的:

  http://jingyan.baidu.com/article/eae0782780f4df1fec5485f5.html

  http://jingyan.baidu.com/article/08b6a591ae339214a809223e.html

里面说到“修改upload/uc_client/model/base.php,在第74行加上UC_DBNAME”(里面估计是说的旧版本,所以行号不一样),应该就是针对这个问题的,截图的内容也能对上。

但是这里面的说法有一点误导,因为它说的是“加上”UC_DBNAME,而没有明确说把“把第4个参数替换成UC_DBNAME”,因此会让人觉得是原始的代码里漏了一个参数。如果这里真“加”一个参数上去,还是会有问题的。。。


总之,这里只要把第4个参数 '' 替换成 UC_DBNAME 就能解决这个问题。


点赞  ( 0 )
收藏
评论(1)
共1条回复 最后由y****g回复于2015-09-26 09:18
#2尚****坤回复于2015-09-25 19:55:22

棒棒哒

0
TOP