如何修复SQLSTATE [42000]:语法错误或访问冲突

时间:2019-07-16 06:58:54

标签: php mysql yii2

我有一个yii2应用程序,该应用程序运行正常,但现在只有一页无法正常工作,并显示PDO异常错误。

我尝试更改有备份的数据库,但不会产生结果。

我的控制器页面代码是:

public function actionBoxedmainscreen() {
    if (Yii::$app->user->isGuest) {
        return $this->redirect([Yii::$app->homeUrl, 'loginmessage'=>'Access denied : Main Boxed Screen']);
    }
    if (isset($_GET['width'])) {
        Yii::$app->session->set("width", $_GET['width']);
        Yii::$app->session->set("height", $_GET['height']);
    }

    $this->layout = 'mainscreen';
    $channels = Yii::$app->session->get('noOfChannels');
    $noOfChannels = ($channels != null) ? $channels : 32;

    $channels = \app\models\Channels::findBySql('Call GetWebChannels()')->all();
    $screenadjust = models\Displaysettingweb::findBySql('Select * from displaysettingweb where maxchannel >='.$noOfChannels.' and minchannel<='.$noOfChannels)->one();
    $coloursettings = models\Coloursetting::find()->one();
    $RowsColumn = $this->getRowandColumns($noOfChannels);
    return $this->render('boxedmainscreen', ['width'=>Yii::$app->session->get('width'), 'height'=>Yii::$app->session->get('height'), 'rows'=>$RowsColumn['rows'], 'columns'=>$RowsColumn['columns'],'noOfChannels'=>$noOfChannels, 'screensettings'=>$screenadjust, 'channels'=>$channels,'coloursettings'=>$coloursettings]);
}

我希望页面能够显示,但显示为

  

SQLSTATE [42000]:语法错误或访问冲突:1305过程   datalogger.GetWebChannels不存在

正在执行的SQL是:调用GetWebChannels()

1 个答案:

答案 0 :(得分:0)

这取决于您如何从旧数据库中获取备份,所使用的不导出过程的方法尝试使用mysqldump尝试另一个备份

mysqldump将默认备份所有触发器,但不备份存储过程/函数。有2个mysqldump参数可控制此行为:

--routines – FALSE by default
--triggers – TRUE by default

因此在mysqldump命令中,添加--routines,如:

mysqldump <other mysqldump options> --routines > output.sql