错误提示:
SQLSTATE[HY000] [1049] Unknown database 'ybdbfruitshop'
//这是我的 Model 文件,已经改了 库名 了:
<?php
namespace Common\Model;
use Think\Model;
class classoneModel extends Model
{
protected $dbName = 'ybdbcjd'; //虽然改了库名了,但是没有调用这个!
protected $trueTableName = 'classone';
protected $_map = array
(
'姓名'=>'name',
);
function say($str = 'i am in namespace Home\Model <br>')
{
echo $str;
}
}
我调用的上面的类文件:
<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;
public function create1()
{
$use = D('classone');
$_POST["time"]= date("Y-m-d H:i:s",Time());
$use->create();
$use->add();
$this->success('插入成功', 'lastRow',2);
}
//配置文件
'DB_TYPE'=>'mysql',
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PREFIX'=>'',
'DB_DSN'=>'mysql:host=localhost;dbname=ybdbfruitshop;charset=UTF8',//这里 虽然是 ybdbfruitshop ,但是我在 model 类文件已经改了库名了..不是应该覆盖吗?
你需要在配置问提前配置好两个完整的数据库连接。比如:
你要是嫌费劲,你可以复制下数组,然后只修改其中的数据库名字,但是只配置数据库名是不行的。
另外你也可以通过在模型里重定义
或者
或者
最后补充下:
中的
$dbName
是干什么的。它是用来操作同一个mysql账户下的另外数据库的,在本问题中,如果你的同一个mysql账户中确实有这个数据库,并且有相应权限的话,是可以正确执行的。生成的类似sql语句为:
这并非
thinkphp
自身意义上的切换数据库,而是mysql
自身的跨数据库操作语法,局限性较大,不建议使用。