Developers lose database schemas when Supabase pauses inactive projects
Developers are experiencing significant pain related to database versioning, performance, reliability, and tooling. They face challenges with schema management, data loss, slow queries, and a lack of robust, user-friendly tools to simplify database workflows. This often leads to repetitive tasks, data loss, and frustration.
SOURCES (60)
“需求背景 目前指纹识别依赖在线服务,本地不保存「指纹 → 元数据」的对应关系。一旦迁移设备或元数据丢失,已匹配过的结果无法复用,需要重新匹配,还可能因网络或服务不可用而失败。 希望能有一个 本地指纹数据库 ,让用户自己沉淀、备份、分享「音频指纹 ↔ 元数据」的映射数据。 期望功能 1. 导出备份 :可将本地的「指纹 → 元数据」映射导出为一个独立文件(如 JSON/SQLite),用于备份或迁移。 2. 指纹恢复 :迁移后若元数据丢失,可直接用已备份的指纹数据库离线匹配,无需联网即可恢复标题、艺人、专辑、封面等元数据。 3. 数据库分享 :导出的指纹库可以分享给他人。导入方即使没有对应的歌曲,也只是「无匹配资源」,不影响正常使用,相当于一个可共享的离线元数据库。 4. 合并去重 :支持导入多个指纹库并合并,按指纹自动去重。 5. 版本预览筛选 :同一指纹可能对应多份元数据——这些差异主要来自合并了不同用户的指纹数据库(各人刮削/编辑出的元数据可能不同),也可能与本地已有的元数据不一致。因此导入或匹配时应支持预览并筛选,由用户选择采用哪个版本。 6. 字段选择性写入 :导入或匹配时可过滤”
“which layer it sits in matters more than which vendor it was. auth or payments you can swap in a week and nobody notices. sync is different because it ends up owning your data model, and once your schema is shaped around someone elses conflict resolution theres nothing left to swap. i lean on a bank aggregation provider for a similar job in a different domain and its the same shape. metered per call, and when it breaks its not yours to fix, you just relay the apology. if the local db is genuinel”
“The scheduled Guardian run failed , which means something is broken on the live site. Run: https://github.com/TEARN1/The Gruvs/actions/runs/33591208078 One of these is true: Schema drift — a query no longer matches the database, so a feature is silently dead (this is how RSVP, Crews, polls and tickets broke without anyone noticing). Health — thegruvs.com does not boot, is throwing errors, or is no longer installable as an app. Open the run above for the exact failure.”
“Currently it is possible to download a backup (snapshot) in a form of sql.gz file. It would be great to have possibility to upload such file, to the same or different instance of databasement. Such functionality would be great for transferring databases or simply enabling user to use offline backups.”
“What happens open hybrid cloud test 0cbcb1d6 — the database this checkout's backend suite claims — holds all 31 tables and zero rows in drizzle. drizzle migrations . Every run in that checkout dies in beforeAll : Not one test runs. The suite is not red, it is unstartable, and it stays that way: the migrator only ever adds, so a database in this state fails identically for ever. The only way out today is to know that test databases exist and to drop one by hand. How a database gets there Two ways”
“this is exactly it, a missing WHERE is the scariest bug because nothing actually fails”
“Summary Terminology correction (audit follow up): InMemoryStorageDriver is the first party testing driver, not one of the production field storage backends ( sql blob / sql column ). The production defect below is the non atomic SQL path. The in memory result proves the framework's test composition cannot model messaging faithfully; it is not evidence of a second production backend outage. Messaging's creator membership is implemented as a best effort POST SAVE side effect even though it is the”
“exactly this. if the user hasnt opened the app in 6 months you basically have zero options”
“Before Submitting [x] I searched open and closed issues and discussions for an existing report. [x] I checked whether this is already fixed on the dev branch or latest source. [x] I understand that maintainers want a well written issue before any code pull request. [x] I am using the latest available version of Open WebUI for my install method. [x] This is not a security vulnerability. Installation Method Docker Open WebUI Version v0.11.2 Operating System Debian 13 & Debian 12 Browser No respons”
that's the one that actually worried me too, and I didn't have a good answer for it until you asked. just shipped exportLocalData() and importLocalData(), dumps everything on the device as plain…
“the part that would freak me out is the installs that haven't been opened in months. offline-first means the device is the source of truth, and when the sync backend shuts down that local data is stranded, no export, no backup. did you have a way to reach those users or is it just gone?”
“Hi, I'm trying to setup a basic ha postgres cluster using the Spilos images in a docker swarm setup, but every few days the thing crumbles down with DNS resolution issues, timeouts, wal and etcd records corruption, I don't have the money to rely on an hosted solution rn, so has anybody run into these problems and solved them?. This makes me understand why the DBA role exists, but it is so frustrating and absurd that it is not a solved problem for something that feels so relatively trivia”
“yeah, that's basically the whole post in 3 words. ended up writing onebase because of it, wanted the sync layer to be something I run instead of something that could get shut off on me”
“Depends if they're hitting the same field or not. update() only sends the fields you actually changed, and the server does a $set on just those. So 10 devices editing 10 different fields on the same doc, all of them land. Nothing lost there. Same field is where it's last write wins. Each push is its own mongo transaction so they serialize, but there's no version check, so nothing errors or gets rejected. Everyone converges on whoever won, either through the change stream or the next”
“Curious whats the behaviour when its syncing 10 devices, all updating same row on same table at the same time?”
“- why not just duplicate the source database itself? - yes, make a blank entry in the database, and select one of the options from the property (select or multi select). When you move that item into the new database the properties will be there. You can also use the Notion agent to do either of these actions.”
“interesting that you went lossy on purpose. how do you communicate to users what they're actually losing per engine? like if someone expects full Redis command support and gets a table metaphor, thats a pretty big gap to paper over in the UI”
“yeah the switch always starts honest ("just postgres and mysql") and then mongo is a special case, redis is a special case, and the UI is full of `if (type === …)` that nobody wants to touch. The rule that actually keeps it clean is boring: no engine type checks outside the provider. The UI only sees capabilities. Adding an engine is a provider + a doc + an integration test in the same PR, or it drifts. Glad the one-liner helped. If a GUI has ever lied to you about a schema (redis-with”
“I kept hitting the same wall with desktop DB tools in a team that lives in the browser: nobody wants another Electron app, and "just use the vendor console" falls apart the moment you have Postgres plus Redis plus Mongo in the same VPC. So I maintain LibreDB Studio, a self-hosted web SQL IDE. The part that actually took the work is not the editor chrome. It's making seventeen engines look like one API without a forest of `if (type === 'mongodb')` checks in the UI. The trick”
“Team, sorry to bother but I need help. I’ve enabled MariaDB for history and recording and is working fine, I do see the DB growing :slight_smile: I’d like to track everything even unavailable etc… but when I try to s…”
“agreed on the constraint, that's the part doing the work. thing that bites after that is on conflict do nothing returns zero rows, so whatever reads the returned id gets null and treats a correct dedupe as a failed write. do update set ... returning, or catch the violation and re-select. and get_or_create / find_or_create_by are that same check-then-insert with an orm around it, which a lot of people assume is safe”
“Row count checks are basically useless for this, every migration I ever did had some silent column swapping or truncation nobody noticed for weeks For the intentional change problem, maybe let it accept a mapping of expected transformations for certain columns so it knows those diffs are fine?”
“Strangely, I've never had that many issues with it. A lot of it maps to SQL directly if I remember correctly. Its Java counterpart Hibernate is a complete nightmare in comparison.”
“Well to be fair, to kill duplication you have to create some sort of abstraction and the best way to achieve this for you setup is actually to use centralised databases and then use filtered views in your dashboards/interfaces. For example, I have a master database for Projects and another for Tasks. They both have a Venture property which is just a Select type. In my page for a specific venture, I have a filtered view of the projects for that specific Venture and the same with its tasks. The ta”
“Summary Add PostgreSQL database schema validation against SQLAlchemy ORM entity metadata. Enhance request scoped PostgreSQL session lifecycle management in HTTP middleware. Context To ensure data schema integrity and prevent runtime query errors caused by mismatched database table definitions, the application needs a mechanism to validate table columns, data types, nullability, and primary keys at startup. In addition, database sessions need to be bound cleanly to the request state and properly”
“Central DB is right, the fix is relations/rollups not copies — one Clients DB, one Projects DB (relation to Clients), one Tasks DB (relation to Projects). Then use filtered views per client instead of duplicating databases — that's what kills the clutter.”
“yeah D1 probably makes a lot of sense if you’re already living in Cloudflare. I went Supabase mostly because I knew I’d want relational data + admin stuff pretty quickly.”
“Trying Selat means installing Postgres, creating a database, and setting DATABASE URL . For a gateway whose whole pitch is that it removes setup, that is the wrong first impression, and it is the barrier that matters most for a product asking to hold your OAuth tokens: people should be able to run it before they decide to trust it. The obvious answer is a SQLite adapter, and the numbers say it is the wrong one. Postgres specific SQL is not confined to the store layer: SQLite has none of those. S”
“Yes, I have been doing tests with annotations and conflicts, but only with 2 desktop clients. altero follows the published syncing protocol, but there are some quirks in the reference data server, which altero also implements. One of the projects main goals is full compatibility with the zotero desktop client. However, it is still alpha, so there might be some corner cases that I haven't covered yet and it shouldn't be used in production yet.”
“Problem There is no way to find an old message. History is keyset paginated backwards, so finding something from last month means paging through everything since. What already exists Postgres was chosen partly for this. From the README, on why not SQLite: "Postgres additionally provides LISTEN/NOTIFY , JSONB , full text search, and partitioning for when messages grows." So the intent was there from the start; nothing has been built on it. What it needs A tsvector over message content, either a g”
“Split out of 475 rather than bolted onto its fix. openStateDb can refuse to migrate or write a database, for two reasons: 1. A newer build wrote it — pre existing behaviour, deliberate (ADR 0019), so an older build cannot clobber newer data. 2. Its schema is damaged — a migration recorded as applied whose objects are only partly present. Added by 475, because re running it would fail on the half that is already there. In both cases stateDb.locked makes every store method a no op that returns a n”
“It can work, but I think it depends a lot on how the data and queries are structured.”
“A few of the things people asked for recently are now in the next LakeDB beta: relationship maps with real foreign keys + local links system schemas visible without cluttering the explorer user + privilege management with SQL review before applying changes Most of this came directly from conversations with database users, which is exactly how I want to keep improving the app. LakeDB is still local-first, the normal database client stays free, and AI remains optional. https://github.com/DavLagoHe”
“Goal Make schema teardown keep up with the object types Weasel can create, and record why it keeps falling behind. The audit Two strategies, and only one of them is safe against future additions. | Provider | Strategy | Object types handled | State | | | | | | | PostgreSQL | DROP SCHEMA … CASCADE | everything, by the server | complete by construction | | MySQL | DROP DATABASE IF EXISTS | everything, by the server | complete by construction | | SQLite | enumerate | triggers, views, indexes, table”
“There is currently no way for an operator to ask "is this database ready for the code I am about to run?" without either attempting a migration or reaching into internals. postgres schema version ( src/db/migrations.jl:1189 1202 ) is the only public read only entry point, and it answers a narrower question than its name suggests: it validates the ledger relation and returns the highest recorded version. It does not check that the application tables match the manifest for that version. A database”
“Almost everything gets used atleast once a week, but some rarely when needed, like PGAdmin is only needed when I need to create new databases within PostgreSQL because I use one docker container for multiple postgrsql needs. Or Metabase gets used only once a year when I need to shar my financial Data with my CA. But rest are more or less used either directly or in the background.”
“the documented schema and incremental sync are the real win here, because dumping everything once is easy and keeping it usable locally is the part people usually skip”
“Summary v1.2.1 (2026 06 06) is the latest tagged release, but it is effectively broken against any beads database on the current (post column split) schema: its embedded SQL and embedded beads library still reference wisp dependencies.depends on id / dependencies.depends on id , which beads split into depends on issue id / depends on wisp id / depends on external . On a production town running v1.2.1 with migrated databases we observed: Reaper : gt reaper scan fails on every migrated DB with Err”
“Default is always Postgres, and if you can't come up with a compelling reason otherwise then stick with it. Which is 95% of cases of people posting on Reddit tbh.”
“the schema winnowing piece is the real bottleneck imo. thousands of columns and you need the right ones surfaced before the LLM even starts generating. how sensitive is query quality to getting that retrieval step wrong?”
“I do this with postgres and minio, works great for doc management system we built. storing files in db is just asking for pain when you need to migrate or backup later for the security part, postgres row level security is solid for tenant isolation, way simpler than trying to manage it at application layer. plus you can do column level encryption with pgcrypto if some fields need extra protection one thing nobody mentioned yet, postgres full text search on the metadata is actually decent for mil”
“Claude did me a demo, which helped. So correct me if I'm wrong... The main reason not to use a JSON as I described earlier, is not neccecarily the fact that it's just sitting in the same directory as everything else, but that the JSON format isn't a suitable format to handle the large number of writing and activity that would come from a "web environment". Instead, I should use SQL with a db file which is designed for the high inensity application of web development. So it&”
“That's probably the right thing to do! But I would also like to understand what actually happens under the hood (to an extent...) instead of using a quick fix for it. Which is why I'm here and not somewhere like Wix or Squarespace, whatever 😁 (also because I'm a cheapskate and don't want to pay) Thanks nonetheless, will keep in mind and maybe check it out later.”
“Would [relational DB] + proper replication/HA/object storage be the more sensible architecture? Yes, IMO. Which would lead me to choose PostgreSQL over Cockroach, but that's personal, and I think the distinction matters less if you commit to this architecture.”
“Then you are essentially creating a database, but it's going to be worse than using a proper database software.”
“The warning about retrofitting tenant boundaries is the one to take seriously. That's not a refactor, it's a rebuild, and PostgreSQL Row Level Security is exactly how you avoid it. Encode isolation at the database layer from day one and the application code never has to enforce it. For your stack the three decisions that actually matter before you write a line of CDK: which isolation model (pool+RLS vs. silo vs. bridge), which Cognito pattern (shared user pool with a tenantId attribute v”
“Now imagine the single server crashes mid-write (let's say you run a system update or kill the process for whatever reason) and you lose your entire database...”
“Yes, SQL is a language designed to query data (usually tabular data). You can pass a SQL query to a database engine that supports SQL (e.g. Postgres) to query the data it stores. And yes, in a sense a Postgres database is an alternative data storage to a JSON file. They both handle persistence but they do so in a very different way. You can read about the Relational Model, Entity-Relationship diagrams, and normal forms to understand SQL databases better. A different class data storage solution a”
“SQL here is being used as a shorthand for relational database management systems (RDBMS) that you can query via SQL. Advantages to this include (but are not limited to): keeping your storage separate from your application server so that they can scale independently (ie supporting multiple replicas of your server and/or DB replication), data indexation (doing some pre-computation to make specific queries faster), ACID (guarantees about exactly what was and was not written in all cases including n”
“You can. But what happens when you need to write to it for multiple users at the same time? What happens when you need to share it across multiple machines? What about multiple data centers? What then?”
“Check Existing Issues [x] I have searched all existing open AND closed issues and discussions and found none comparable to my request. Verify Feature Scope [x] I believe this feature request is appropriately scoped for the Issues section as described above. Problem Description Chunks written to the vector DB carry metadata such as file id , created by , source and embedding config , but no timestamp . In save docs to vector db() ( backend/open webui/routers/retrieval.py ), the per chunk metadata”
