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

Next.js13+Sequelize操作MySQL时出现pg-hstore模块找不到错误

解决Next.js13 App Router里Sequelize调用MySQL模型却报pg-hstore缺失的问题

先排查Sequelize配置

核心问题大概率是配置没明确指定用MySQL,导致Sequelize默认想去加载PostgreSQL的依赖。打开你的数据库配置文件,确保dialect字段写死成mysql:

// 示例:db/config.js
const sequelize = new Sequelize(
  process.env.DB_NAME,
  process.env.DB_USER,
  process.env.DB_PASSWORD,
  {
    host: process.env.DB_HOST,
    dialect: 'mysql', // 必须明确写这个,别漏!
    dialectOptions: {
      charset: 'utf8mb4',
    },
  }
);

别在客户端组件里直接碰模型

Next.js13的App目录组件默认是服务器组件,如果你在page.js里加了'use client'标签,组件会跑在客户端,而数据库模型根本不该在客户端加载。如果需要前端交互,就把数据请求逻辑放到API路由(不管是pages/api还是app/api)里,客户端通过fetch调用接口,别直接导入模型。

修复依赖与缓存

  1. 先把可能误装的PostgreSQL相关依赖删掉:
npm uninstall pg pg-hstore
  1. 确认MySQL所需的依赖都装了:
npm install sequelize mysql2
  1. 清掉Next.js的缓存再重启:
rm -rf .next
npm run dev

正确的模型使用姿势

在App目录的page.js里(服务器组件,不带'use client'),直接导入模型并执行数据库操作就行:

// src/app/(admin)/admin/contact/page.js
import Contact from '@/models/Contact';

export default async function ContactPage() {
  const contacts = await Contact.findAll();
  return (
    <div>
      {/* 渲染你的联系人列表 */}
    </div>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:55:08