Skip to content

v1.10.1 – Multi-Database Era Begins: MySQL Joins the Family

Choose a tag to compare

@laipz8200 laipz8200 released this 26 Nov 10:40
· 1492 commits to main since this release
1.10.1
b353a12

🎉 Major new capabilities, critical stability fixes
🧩 And the long-awaited MySQL support finally arrives!

🚀 New Features

Infrastructure & DevOps

MySQL adaptation (PostgreSQL / MySQL / OceanBase now fully supported)
Thanks @longbingljw from the OceanBase team!
PR: #28188

  • Adds DB_TYPE configuration option
  • Supports MySQL JSON / LONGTEXT / UUID / index differences
  • Updates Alembic migrations for multi-DB compatibility
  • Introduces cross-DB SQL helpers for statistics and date handling
  • Rewrites dataset metadata filters with SQLAlchemy JSON operators
  • Adds CI workflows for MySQL migration testing

This is a significant backend upgrade in Dify’s history — multi-database support is now first-class.

Performance & Workflow Editor Optimization

  • Implemented a major performance upgrade for the Workflow Editor, eliminating costly per-node validation scans, reducing unnecessary re-renders, and improving responsiveness from becoming laggy at ~50 nodes to remaining smooth even near ~200 nodes — #28591, by @iamjoel.

Pipelines & Workflow Engine

  • Introduced a broad set of workflow-editor improvements, including UI refinement, stability fixes, and quality-of-life enhancements across variable inspection, media components, and node interactions — #27981, by @Xiu-Lan, @crazywoola, @johnny0120, @Woo0ood.

🛠 Fixes & Improvements

Runtime Stability & Workflow Execution

  • Fixed an issue where advanced-chat workflows could fail to stop, preventing stuck or lingering processes — #27803, by @Kevin9703.
  • Fixed a 500 error triggered when running “any node” in draft mode, improving workflow debugging reliability — #28636, by @hjlarry.
  • Corrected token overcounting during loop/iteration evaluation (not related to billing tokens) — #28406, by @anobaka.
  • Fixed workflow-as-tool returning an empty files field, ensuring tool integrations receive correct file metadata — #27925, by @CrabSAMA.
  • Resolved a session-scope error in FileService that could cause inconsistent file deletion behavior#27911, by @ethanlee928.

Knowledge Base

  • Fixed a 500 error when using the weightedScore retrieval option, restoring stability for weighted ranking scenarios — #28586, by @Eric-Guo.

Developer Experience & SDKs

  • Fixed Node.js SDK route and multipart upload handling, ensuring robust file and data submission through JavaScript integrations — #28573, by @lyzno1.
  • Fixed OpenAPI/Swagger failing to load, restoring developer documentation access — #28509, by @changkeke, with contributions from @asukaminato0721.

Web UI & UX

  • Corrected dark-mode rendering for the ExternalDataToolModal, ensuring consistent appearance across themes — #28630, by @Nov1c444.
  • Fixed Marketplace search-trigger behavior and scroll position, improving discovery and navigation — #28645, by @lyzno1.
  • Fixed incorrect navigation when opening chatflow log details, providing more predictable UI behavior — #28626, by @hjlarry.
  • Fixed layout and rendering issues in the README display panel, ensuring cleaner content presentation — #28658, by @yangzheli.
  • Reduced unnecessary re-renders in the useNodes hook, improving overall front-end performance — #28682, by @iamjoel.

Plugins & Integrations

  • Updated plugin verification logic to use a unique identifier, improving correctness across plugin installations and updates — #28608, by @Mairuis.

System Robustness

  • Prevented nullable tags in TriggerProviderIdentity, avoiding potential runtime errors — #28646, by @Yeuoly.
  • Improved error messaging for invalid webhook requests, providing clearer diagnostics — #28671, by @hjlarry.

Feedback & Logging

  • Fixed like/dislike feedback not appearing in logs, ensuring end-user rating signals are correctly visualized — #28652, by @fatelei.

Internationalization (i18n)

  • Standardized terminology for trigger and billing events, improving translation consistency — #28543, by @NeatGuyCoding.
  • Fixed multiple issues in execution-related translations, correcting missing or malformed entries — #28610, by @NeatGuyCoding.
  • Removed incorrect “running” translation entries#28571, by @NeatGuyCoding.
  • Refactored i18n scripts and removed obsolete translation keys#28618, by @lyzno1.
  • Added missing translations across the UI, improving language coverage — #28631, by @lyzno1.

Maintenance & Developer Tooling

  • Added front-end automated testing rules to strengthen baseline reliability — #28679, by @CodingOnStar and contributors.
  • Upgraded system libraries and Python dependencies to maintain security and compatibility — #28624, by @laipz8200 and @GareArc.
  • Updated start-web development script to use pnpm dev, simplifying contributor workflows — #28684, by @laipz8200.

Upgrade Guide

Docker Compose Deployments

Important

Required Action Before Upgrading

Starting from 1.10.1, the Dify API image now runs as a non-root user (UID 1001) for improved security.
If you are using local filesystem storage (the default in community deployments), you must update the ownership of your mounted storage directories on the host machine, or the containers will fail to read/write files.

Affected services:

  • api
  • worker

Affected host directory:

  • ./volumes/app/storage → mounted to /app/api/storage

What you must do before restarting the new version:

# Stop existing containers
docker compose down

# Update directory ownership on the host
sudo chown -R 1001:1001 ./volumes/app/storage

# Restart normally
docker compose up -d

After this one-time migration, Dify will operate normally with the new non-root user model.

  1. Back up your customized docker-compose YAML file (optional)

    cd docker
    cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
  2. Get the latest code from the main branch

    git checkout main
    git pull origin main
  3. Stop the service. Please execute in the docker directory

    docker compose down
  4. Back up data

    tar -cvf volumes-$(date +%s).tgz volumes
  5. Upgrade services

    docker compose up -d

If you encounter errors like below

2025/11/26 11:37:57 /app/internal/db/pg/pg.go:30
[error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=dify_plugin`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)

2025/11/26 11:37:57 /app/internal/db/pg/pg.go:34
[error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
2025/11/26 11:37:57 init.go:99: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
panic: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)

Please use the following command instead. For details, please read this #28706

docker compose --profile postgresql up -d

Source Code Deployments

  1. Stop the API server, Worker, and Web frontend Server.

  2. Get the latest code from the release branch:

    git checkout 1.10.1
  3. Update Python dependencies:

    cd api
    uv sync
  4. Then, let's run the migration script:

    uv run flask db upgrade
  5. Finally, run the API server, Worker, and Web frontend Server again.


What's Changed

New Contributors

Full Changelog: 1.10.0...1.10.1