diff --git a/packages/backend/migration/1727998351561-increase_character_limits.js b/packages/backend/migration/1727998351561-increase_character_limits.js
new file mode 100644
index 0000000000..8754163846
--- /dev/null
+++ b/packages/backend/migration/1727998351561-increase_character_limits.js
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class IncreaseCharacterLimits1727998351561 {
+	name = 'IncreaseCharacterLimits1727998351561'
+
+	async up(queryRunner) {
+		await queryRunner.query(`ALTER TABLE "drive_file" ALTER COLUMN "comment" TYPE varchar(100000)`);
+		await queryRunner.query(`ALTER TABLE "note" ALTER COLUMN "cw" TYPE text`);
+	}
+
+	async down(queryRunner) {
+		await queryRunner.query(`ALTER TABLE "note" ALTER COLUMN "cw" TYPE varchar(512)`);
+		await queryRunner.query(`ALTER TABLE "drive_file" ALTER COLUMN "comment" TYPE varchar(8192)`);
+	}
+}
diff --git a/packages/backend/migration/1727998351591-after-increase_character_limits copy.js b/packages/backend/migration/1727998351591-after-increase_character_limits copy.js
new file mode 100644
index 0000000000..0772556c0b
--- /dev/null
+++ b/packages/backend/migration/1727998351591-after-increase_character_limits copy.js	
@@ -0,0 +1,17 @@
+export class AfterIncreaseCharacterLimits1727998351591 {
+	name = 'AfterIncreaseCharacterLimits1727998351591'
+
+	async up(queryRunner) {
+		await queryRunner.query(`DROP INDEX "IDX_7cc8d9b0ee7861b4e5dc86ad85"`);
+		await queryRunner.query(
+			`CREATE INDEX IF NOT EXISTS "IDX_7cc8d9b0ee7861b4e5dc86ad85" ON "note" USING "pgroonga" ("cw")`,
+		);
+	}
+
+	async down(queryRunner) {
+		await queryRunner.query(`DROP INDEX "IDX_7cc8d9b0ee7861b4e5dc86ad85"`);
+		await queryRunner.query(
+			`CREATE INDEX IF NOT EXISTS "IDX_7cc8d9b0ee7861b4e5dc86ad85" ON "note" USING "pgroonga" ("cw" pgroonga_varchar_full_text_search_ops_v2)`,
+		);
+	}
+}