Flowise
Flowise copied to clipboard
fix: change DocumentStoreFileChunk columns to LONGTEXT
Description
Fixes chatflow corruption when uploading large documents (>64KB) to Document Store by changing database column types from TEXT to LONGTEXT.
Problem
Users experience the following when uploading large markdown documents:
SyntaxError: Unterminated string in JSON at position 65527- The entire chatflow becomes corrupted and unopenable
- All work is lost
Root Cause
The metadata and pageContent columns in DocumentStoreFileChunk used TEXT type:
- MySQL/MariaDB TEXT has a maximum size of 65,535 bytes (64KB)
- Error at position 65,527 indicates the limit was hit
- MySQL silently truncates data exceeding this limit
- Truncated JSON becomes malformed → application crashes
Changes
-
Entity Update: Changed column types from
TEXTtoLONGTEXTinDocumentStoreFileChunk.tspageContent: TEXT (64KB) → LONGTEXT (4GB)metadata: TEXT (64KB) → LONGTEXT (4GB)
-
Database Migrations: Created migrations for MySQL and MariaDB
1765000000000-FixDocumentStoreFileChunkLongText.ts(MySQL)1765000000000-FixDocumentStoreFileChunkLongText.ts(MariaDB)- Registered migrations in index files
-
Migration Safety:
- Existing data is preserved
up()migration expands columns to LONGTEXTdown()migration reverts to TEXT if needed- PostgreSQL and SQLite unaffected (TEXT already unlimited)
Files Changed
packages/server/src/database/entities/DocumentStoreFileChunk.tspackages/server/src/database/migrations/mysql/1765000000000-FixDocumentStoreFileChunkLongText.ts(new)packages/server/src/database/migrations/mysql/index.tspackages/server/src/database/migrations/mariadb/1765000000000-FixDocumentStoreFileChunkLongText.ts(new)packages/server/src/database/migrations/mariadb/index.ts
Testing
- [ ] Test with documents >64KB in Document Store
- [ ] Verify migration runs successfully on existing databases
- [ ] Confirm chatflows remain functional after migration
- [ ] Test rollback migration if needed
Migration Instructions
After merging, users need to run: pnpm typeorm:migration-run## Related Issues Fixes #2352
Type of Change
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
Checklist
- [x] My code follows the project's style guidelines
- [x] I have performed a self-review of my code
- [x] No linter errors introduced
- [x] Database migrations follow TypeORM conventions
- [x] Backward compatible with existing data
Summary of Changes
Hello @KushagraaWadhwa, I'm Gemini Code Assist[^1]! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request addresses a critical bug causing chatflow corruption when users upload large documents exceeding 64KB to the Document Store. The issue stemmed from MySQL/MariaDB's TEXT column type having a 64KB size limit, leading to data truncation and malformed JSON. The changes involve upgrading the relevant database columns to LONGTEXT to support significantly larger data, thereby preventing data loss and ensuring the stability of chatflows.
Highlights
- Database Column Type Expansion: The
pageContentandmetadatacolumns in theDocumentStoreFileChunkentity have been updated fromTEXTtoLONGTEXTto accommodate larger data volumes, specifically addressing issues with documents exceeding 64KB. - New Database Migrations: Dedicated migration files (
1765000000000-FixDocumentStoreFileChunkLongText.ts) have been introduced for both MySQL and MariaDB to apply the column type changes to thedocument_store_file_chunktable. - Data Integrity and Backward Compatibility: The migrations are designed to preserve existing data during the
up()process, expanding column types safely. Adown()migration is also provided for reversion. PostgreSQL and SQLite databases are unaffected as theirTEXTtypes already support larger sizes.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in pull request comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with :thumbsup: and :thumbsdown: on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
[^1]: Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.