You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netflix克隆项目部署上线触发SQLSTATE[42S02]、42S22报错

仿Netflix站点部署故障排查

错误根因

两个报错均为数据库部署配置错误导致,和贴出的PHP业务代码逻辑无关,这也是项目本地XAMPP环境运行正常的核心原因:

  • 首个Base table or view not found报错:代码连接的线上数据库名为dingyczcz,部署时没有将本地库中的videoProgress业务表导入到该数据库下,PDO执行SQL时找不到对应表直接抛出异常。报错信息里的dingyczczvideoProgress是数据库名+表名的自动拼接标识,不是要求创建带这个名字的对象。
  • 后续Column not found报错:错误创建了名为dingyczczvideoProgress的空数据库,而非在dingyczcz业务库下创建videoProgress表,SQL执行时定位不到正确的表结构,自然找不到username字段。

修复步骤

  • 删除误创建的名为dingyczczvideoProgress的空数据库,该数据库对项目运行无任何作用。
  • 打开项目的数据库配置文件,确认线上环境的数据库连接参数指向主机分配的dingyczcz库,且连接账号拥有该库的读写、建表权限。
  • 将本地XAMPP环境中项目使用的完整数据库(含所有表结构、初始业务数据,必须包含videoProgress、videos等所有业务表)导出为SQL文件,导入到线上的dingyczcz数据库中。导入完成后确认dingyczcz库下存在videoProgress表,且表结构包含代码中用到的videoId、username、dateModified字段。
  • 清理浏览器缓存、PHP进程缓存后重新访问站点即可恢复正常。

相关代码说明

VideoProvider.php中相关方法SQL写法无语法问题,以getEntityVideoForUser方法为例,核心查询逻辑无需修改:

public static function getEntityVideoForUser($con, $entityId, $username) {
    $query = $con->prepare("SELECT videoId FROM `videoProgress` 
                            INNER JOIN videos
                            ON videoProgress.videoId = videos.id
                            WHERE videos.entityId = :entityId
                            AND videoProgress.username = :username
                            ORDER BY videoProgress.dateModified DESC
                            LIMIT 1");

    $query->bindValue(":entityId", $entityId);
    $query->bindValue(":username", $username);
    $query->execute();

    if($query->rowCount() == 0) {
        $query = $con->prepare("SELECT id FROM videos
                                WHERE entityId=:entityId
                                ORDER BY season, episode ASC LIMIT 1");
        $query->bindValue(":entityId", $entityId);
        $query->execute();
    }

    return $query->fetchColumn();
}

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 21:27:18