错误提示:
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 类文件已经改了库名了..不是应该覆盖吗?
http://document.thinkphp.cn/manual_3_2.html#switch_database
手册上写的很清楚了
你需要在配置问提前配置好两个完整的数据库连接。比如:
'DB_CONFIG1' = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp'
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp';
你要是嫌费劲,你可以复制下数组,然后只修改其中的数据库名字,但是只配置数据库名是不行的。
另外你也可以通过在模型里重定义
//在模型里单独设置数据库连接信息
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}
或者
//在模型里单独设置数据库连接信息
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
//或者使用字符串定义
protected $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
}
或者
namespace Home\Model;
use Think\Model;
class InfoModel extends Model{
//调用配置文件中的数据库配置1
protected $connection = 'DB_CONFIG2';
}
最后补充下:
class classoneModel extends Model
{
protected $dbName = 'ybdbcjd';
}
中的$dbName
是干什么的。
它是用来操作同一个mysql账户下的另外数据库的,在本问题中,如果你的同一个mysql账户中确实有这个数据库,并且有相应权限的话,是可以正确执行的。生成的类似sql语句为:
select * from ybdbcjd.table
这并非thinkphp
自身意义上的切换数据库,而是mysql
自身的跨数据库操作语法,局限性较大,不建议使用。