2019-03-26 09:18:58 1478次浏览 2条回答 0 悬赏 10 金钱
Database Exception – yii\db\Exception
SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user
public function  actionSearch(){
        $results = (new Query())->select([
            'al.al_id',
            'al.al_add_user_id',
            'al.al_title',
            'al.al_thumb',
            'al.desc',
            'al.al_post_time',
            'al.transport_name',
            'u.user_name'
        ])
            ->from('article_list as al')
            ->leftJoin('Yii::$app->db_user.user as u','al.al_add_user_id = u.user_id')
            ->All(Yii::$app->db_home);
        print_r($results);die;
    }

最佳答案

  • 朱先生 发布于 2019-03-26 17:25 举报

    跨库没办法链表的

    3 条回复
    回复于 2019-03-27 10:26 回复

    可以的 只要在同一个数据库连接实例就可以
    什么叫同一个连接实例 ?
    假设有 A 数据库 和 B 数据库 他们都部署在 127.0.0.1:3306 数据库服务上
    简而言之 在同IP 同端口 就是同一个实例 只要在同实例下 是可以跨库连表的

    回复于 2019-03-27 16:11 回复

    大佬 有没有测试的语句 观摩下

    回复于 2019-03-29 15:39 回复

    就平时普通的查询语句 表名前加数据库名就可以了呀 比如 SELECT * FROM db1.users

  • 回答于 2019-03-26 09:48 举报

    同学啊,这个很低级的错误,你可以犯出来。以后可得注意啊。PHP中,单引号和双引号的字符串差别,希望你以后要记住啊。
    去php手册看看这些基础。

    ->leftJoin('Yii::$app->db_user.user as u','al.al_add_user_id = u.user_id')
    

    第一个问题就是单引号字符串的问题。
    第二个问题是,你好像要使用跨库表连接,这是不支持的吧。
    你应该建立一个User模型,单独修改它的db属性为你的新连接:db_user。

    ->leftJoin(User::tableName()." as u",'al.al_add_user_id = u.user_id')
    

    第三个,你的想法真棒!
    继续努力。

您需要登录后才可以回答。登录 | 立即注册
PHP学院的中学生
副总裁

PHP学院的中学生

注册时间:2018-10-23
最后登录:2024-09-23
在线时长:168小时13分
  • 粉丝29
  • 金钱4725
  • 威望30
  • 积分6705

热门问题