目 录CONTENT

文章目录

Umami 构建 2.18.1版本时报错P3009

过客
2025-06-01 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

umami 构建时报错# ✗ Command failed: prisma migrate deploy Error: P3009

原因是数据库用的是MySQL 5.7.x版本,umami2.18.1版本用的sql文件语法与MySQL5.7.x的重命名语法略有不同。

决绝不了问题,可以解决提出问的人的,直接将数据库升级到MySQL 8版本就好。

如果不想换库或库里已经有数据换起来麻烦,那我们就修改umami的sql文件。

打开 umami/db/mysql/migrations/02_report_schema_session_data 文件夹下的 migration.sql 文件,将 文件中的首行至第6行

-- AlterTable
ALTER TABLE "event_data" RENAME COLUMN "event_data_type" TO "data_type";
ALTER TABLE "event_data" RENAME COLUMN "event_date_value" TO "date_value";
ALTER TABLE "event_data" RENAME COLUMN "event_id" TO "event_data_id";
ALTER TABLE "event_data" RENAME COLUMN "event_numeric_value" TO "number_value";
ALTER TABLE "event_data" RENAME COLUMN "event_string_value" TO "string_value"

替换为

-- RenameColumns
ALTER TABLE `event_data` ADD COLUMN data_type INTEGER UNSIGNED AFTER event_data_type;
ALTER TABLE `event_data` ADD COLUMN date_value TIMESTAMP(0) AFTER event_date_value;
ALTER TABLE `event_data` ADD COLUMN event_data_id VARCHAR(36) AFTER event_id;
ALTER TABLE `event_data` ADD COLUMN number_value DECIMAL(19, 4) AFTER event_numeric_value;
ALTER TABLE `event_data` ADD COLUMN string_value VARCHAR(500) AFTER event_string_value;

UPDATE event_data
SET data_type = event_data_type,
date_value = event_date_value,
event_data_id = event_id,
number_value = event_numeric_value,
string_value = event_string_value;

ALTER TABLE `event_data` MODIFY data_type INTEGER UNSIGNED NOT NULL;
ALTER TABLE `event_data` MODIFY event_data_id VARCHAR(36) NOT NULL;

ALTER TABLE `event_data` DROP COLUMN event_data_type;
ALTER TABLE `event_data` DROP COLUMN event_date_value;
ALTER TABLE `event_data` DROP COLUMN event_id;
ALTER TABLE `event_data` DROP COLUMN event_numeric_value;
ALTER TABLE `event_data` DROP COLUMN event_string_value;

ALTER TABLE `event_data` ADD PRIMARY KEY(event_data_id);

把出问题的库清理掉,重新构建就可以了

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区