╃巡洋艦㊣ 2024-07-26 11:28:09 599次浏览 0条评论 0 0 0

错误日志

[error][yii\base\ErrorException:8] yii\base\ErrorException: Undefined index: constraint_name in /path/to/vendor/yiisoft/yii2/db/mysql/Schema.php:394

原因

MySQL 8.0.21 中返回的列名大小写不一致,导致 Yii2 在获取数据库模式时出错。

解决方法

  1. 设置 PDO 属性 PDO::ATTR_CASE => PDO::CASE_LOWER
    编辑common/config/main-local.php

    'db' => [
     'class' => 'yii\db\Connection',
     'dsn' => 'mysql:host=localhost;dbname=db_name',
     'username' => 'username',
     'password' => '******',
     'attributes' => [PDO::ATTR_CASE => PDO::CASE_LOWER],
    ],
    
  2. 修改 /path/to/vendor/yiisoft/yii2/db/mysql/Schema.php:394

    foreach ($rows as $row) {
     $row = array_change_key_case($row, CASE_LOWER);
    

推荐第一种方法,使列名明确指定为一致的大小写。

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册