[{"data":1,"prerenderedAt":242},["ShallowReactive",2],{"\u002Fdatabases\u002Fsqlite":3},{"id":4,"title":5,"body":6,"description":217,"extension":218,"faq":219,"headline":232,"lastUpdated":233,"meta":234,"navigation":235,"path":236,"seo":237,"stem":240,"__hash__":241},"databases\u002F4.databases\u002F4.sqlite.md","The SQLite Browser for Mac That's Safe for Your Agent",{"type":7,"value":8,"toc":212},"minimark",[9,13,33,200,205],[10,11,12],"p",{},"TableStudio is a native Mac app for SQLite. Open the database files in your projects, change their tables without hand-writing the rebuild, catch the defaults that quietly hurt SQLite apps, and let coding agents like Claude Code, Codex and Cursor work on them under rules TableStudio enforces itself.",[14,15,18,21],"lead-feature",{"icon":16,"title":17},"i-ph-wrench","Change tables without the rebuild dance",[10,19,20],{},"SQLite can't change a column's type, nullability or default in place, or add a primary key to an existing table. The documented way is to create a new table, copy the rows, drop the old one and rename the new one. TableStudio does all of that from the Schema tab.",[10,22,23,24,28,29,32],{},"It saves a ",[25,26,27],"strong",{},"restore point"," first and tells you the table will be rebuilt, so you can roll back if anything looks wrong. Need rows to test the change against? ",[25,30,31],{},"Generate sample data"," fills a table with realistic fake rows that follow its foreign keys.",[34,35,38,62,82,115,133,148,169,188],"feature-cards",{"description":36,"title":37},"For the database file sitting in your project.","What TableStudio does for SQLite",[39,40,43],"feature-card",{"icon":41,"title":42},"i-ph-shield-check","When an agent opens the file",[44,45,46,50,53,56,59],"ul",{},[47,48,49],"li",{},"Agent reads are read-only in SQLite itself, not just checked by TableStudio.",[47,51,52],{},"Writes can be dry-run: they run, report what changed, and roll back.",[47,54,55],{},"Rows are saved before an agent changes them, so one change can be undone.",[47,57,58],{},"The Agent Center records every call, and the Audit Log every statement.",[47,60,61],{},"An agent can make a sandbox copy of the file and try a risky migration there first.",[39,63,66],{"icon":64,"title":65},"i-ph-folder-open","Your files, found",[44,67,68,71,74],{},[47,69,70],{},"Scan your projects for SQLite files and add them in one step.",[47,72,73],{},"Create a new database file from TableStudio.",[47,75,76,77,81],{},"Reveal a database in Finder, or open it in ",[78,79,80],"code",{},"sqlite3"," in Terminal.",[39,83,86],{"icon":84,"title":85},"i-ph-heartbeat","The PRAGMAs that bite",[44,87,88,95,98,101,108],{},[47,89,90,91,94],{},"Foreign keys declared but not enforced, because ",[78,92,93],{},"PRAGMA foreign_keys"," is off.",[47,96,97],{},"Journal mode that isn't WAL, so readers and writers block each other.",[47,99,100],{},"No busy timeout, so a second writer fails instead of waiting.",[47,102,103,104,107],{},"No planner statistics, because ",[78,105,106],{},"ANALYZE"," has never run.",[47,109,110,111,114],{},"Free space a ",[78,112,113],{},"VACUUM"," would give back.",[39,116,119],{"icon":117,"title":118},"i-ph-tree-structure","Schema checks for loose typing",[44,120,121,124,127,130],{},[47,122,123],{},"Column types with no matching SQLite affinity, which silently store anything.",[47,125,126],{},"Primary keys that allow NULL, a long-standing SQLite quirk.",[47,128,129],{},"Booleans stored as text, money in floating point, and UUIDs in text columns.",[47,131,132],{},"Duplicate indexes and foreign keys without one.",[39,134,137],{"icon":135,"title":136},"i-ph-table","Browse and edit",[44,138,139,142,145],{},[47,140,141],{},"Filter, sort and search any table, and hover a foreign key to preview the row it points to.",[47,143,144],{},"Queue up several edits and commit them as one.",[47,146,147],{},"Import CSV or TSV; export to CSV, TSV, JSON, SQL, Markdown or Excel.",[39,149,152],{"icon":150,"title":151},"i-ph-code","SQL",[44,153,154,157,163,166],{},[47,155,156],{},"Autocomplete that knows your tables and columns.",[47,158,159,162],{},[78,160,161],{},"EXPLAIN QUERY PLAN"," drawn as a tree.",[47,164,165],{},"Ask for SQLite SQL in plain English, or have AI fix an error.",[47,167,168],{},"Query Insights built from your own query history, since SQLite keeps no statistics of its own.",[39,170,173],{"icon":171,"title":172},"i-ph-clock-counter-clockwise","Backups and graduation",[44,174,175,182,185],{},[47,176,177,178,181],{},"One-step backups with SQLite's own ",[78,179,180],{},"VACUUM INTO",", to your Mac or S3.",[47,183,184],{},"Restore points and throwaway sandbox copies of the file.",[47,186,187],{},"Outgrown SQLite? Move the database into Postgres or MySQL with a pre-flight report.",[39,189,192],{"icon":190,"title":191},"i-ph-squares-four","Dashboard",[44,193,194,197],{},[47,195,196],{},"SQLite's own widget packs for health and schema objects, plus widgets you write in SQL.",[47,198,199],{},"ER diagrams, schema compare and the Drizzle or Prisma migrations folder, side by side.",[201,202,204],"h2",{"id":203},"sqlite-in-development-and-beyond","SQLite in development, and beyond",[10,206,207,208,211],{},"SQLite is often where a project starts: a ",[78,209,210],{},"dev.db"," for Prisma or Drizzle, a Rails or Django default, a local cache in an app. TableStudio treats those files as first-class databases. When the project outgrows the file, Migrate Database moves it into Postgres or MySQL. The pre-flight report flags what SQLite's loose typing let through.",{"title":213,"searchDepth":214,"depth":214,"links":215},"",2,[216],{"id":203,"depth":214,"text":204},"Open, browse, edit and query SQLite files in a native Mac app, change a table's columns without writing the rebuild yourself, and let your coding agent work on them safely.","md",[220,223,226,229],{"label":221,"content":222},"Is TableStudio a good alternative to DB Browser for SQLite on a Mac?","If you want a native Mac app that also handles your other databases, yes. It opens SQLite files, rebuilds tables for column changes, checks the PRAGMAs that cause trouble, backs up with VACUUM INTO, and gives coding agents a safe way in. It's {price} once after a {days}-day trial.",{"label":224,"content":225},"Can I change a column's type in SQLite?","Yes. SQLite can't alter most column definitions in place, so TableStudio rebuilds the table for you, after saving a restore point and telling you the table will be rebuilt.",{"label":227,"content":228},"Why does TableStudio say my foreign keys aren't enforced?","SQLite only enforces foreign keys when a connection turns them on with PRAGMA foreign_keys, and it's off by default. TableStudio's health check spots a schema that declares foreign keys on a connection that isn't enforcing them.",{"label":230,"content":231},"Can I move my SQLite database to Postgres later?","Yes. Migrate Database copies a SQLite database into Postgres or MySQL, with a pre-flight report of what won't translate, like SQLite's loose column types.","SQLite","2026-10-29",{},true,"\u002Fdatabases\u002Fsqlite",{"title":238,"description":239},"SQLite Browser and Editor for Mac with MCP","TableStudio is a native Mac SQLite browser and editor. Change columns without a manual rebuild, catch disabled foreign keys and missing WAL, back up with VACUUM INTO, and give agents a safe way in.","4.databases\u002F4.sqlite","QUEZzqtUL87ckcq2jzjOg9n3sGpPyvN6vNooyfpH-gU",1793299920587]