डेटाबेस
PocketCode में असली PostgreSQL 18.2 आता है जो 64-bit ARM फ़ोन पर ऐप के अंदर ही चलता है, न किसी server की ज़रूरत और न किसी account की। इसके साथ हैं: editor में AI assistant वाला SQL console, एडिट किया जा सकने वाला data viewer, backups और restore, execution plans, ER diagrams और schema designer। यही module आपके PostgreSQL और MySQL servers और आपके Neon, Supabase, PlanetScale, Turso और Cloudflare D1 databases भी खोलता है। MongoDB, Redis, Firestore, monitoring, security, dashboards, import और sharing डेटाबेस टूल में हैं।
यह क्या है और इसे कैसे खोलें
Database एक full-screen manager है जो ऐप के ऊपर खुलता है; यह pager के पाँच पेजों में से एक नहीं है। इसका अपना back stack है: core की स्क्रीन इसी पेज पर हैं और बाकी डेटाबेस टूल में।
इसे खोलने के चार तरीके
| कहाँ से | कैसे |
|---|---|
| Tools sheet | निचले bar में Tools पर टैप करें, फिर Dev tools में Database टाइल पर। आप शुरुआती स्क्रीन पर पहुँचते हैं। |
| Command palette | Database Manager चलाएँ (“Connect to and query your databases”)। |
| Home | Database quick action, या databases widget। |
| Backend Manager | किसी connected provider के project पर Open in Database सीधे उसका project, tables या SQL console खोलता है। |
शुरुआती स्क्रीन
Module के navigation की जड़।
आप यह कर सकते हैं
- My Connections connections की सूची खोलता है।
- Local Database कार्ड Running या Stopped दिखाता है। उस पर टैप करके इंजन install करें (सिर्फ़ पहली बार, progress bar के साथ), उसे शुरू करें और उसकी tables खोलें।
- ऐप के इंजन जाँच लेने के बाद कार्ड पर Start / Stop; Manage (इंजन स्क्रीन) और Use in project (connection URL) सिर्फ़ तभी दिखते हैं जब इंजन चल रहा हो।
- Monitoring और Schema Designer (इसे किसी connection की ज़रूरत नहीं)।
आप यह नहीं कर सकते, और क्यों
- जिस फ़ोन की architecture के लिए build में इंजन नहीं है, वहाँ कार्ड पर टैप करने से कुछ install नहीं होता और “PostgreSQL is not included in this build for your device.” दिखता है। Module की बाकी चीज़ें फिर भी काम करती हैं।डिवाइस
- इंजन रुका हो तो Manage और Use in project मौजूद नहीं होते: दिखाने के लिए कुछ होगा ही नहीं।जानबूझकर

इधर-उधर जाना
- Back Android का back gesture है। यह आपके रास्ते पर एक-एक स्क्रीन वापस जाता है, और शुरुआती स्क्रीन पर module बंद कर देता है। header में कोई back arrow नहीं है।
- Title एक switch है। इस पर (या इसके बगल के ▾ पर) टैप करके Switch database खोलें: local इंजन के साथ उसके databases, New Database और Engine; किसी दूसरे connection के साथ सिर्फ़ active database। नीचे Connections (active वाला सबसे ऊपर, Active के निशान के साथ) और All connections। यह शुरुआती स्क्रीन, connection की सूची और form, project की सूची या schema designer पर नहीं मिलता।
- Grid icon Tools खोलता है: छह sections में 25 tools (Explore, Query, Design, Data, Server, Security), एक Search tools box और एक Frequent पंक्ति जो किसी tool को तीन बार इस्तेमाल करने के बाद दिखती है (ज़्यादा से ज़्यादा चार)। सिर्फ़ वही दिखता है जो खुले connection के लिए मायने रखता है।
- Subtitle बताता है कि कौन-सा database खुला है और इंजन चल रहा है या नहीं, जैसे
postgres · ● Engine running। - Biometric lock, अगर आपने उसे Security में चालू किया है, तो module खुलते समय फ़िंगरप्रिंट, चेहरा या device का PIN / pattern माँगता है।



फ़ोन, landscape और टैबलेट
| फ़ोन, portrait | एक समय में एक स्क्रीन। Console Editor और Results के बीच बदलता है। |
| फ़ोन, landscape | बाईं ओर एक पतली rail header की जगह लेती है (Tools और connection switch)। Console में editor और results अगल-बगल दिखते हैं, बीच में एक divider जिसे आप खींच सकते हैं। |
| टैबलेट, portrait | ऊपर editor और नीचे results, 30 / 50 / 70 % presets के साथ। Side panel drawer की तरह खुलता है। |
| टैबलेट, landscape | एक स्थायी Tools rail जो पतली पट्टी में सिमट जाती है, आपके connections और tables वाला side panel (यह 952 dp चौड़ाई से docked होता है), grid के बगल में row detail pane, एक tab strip और console में keyboard shortcuts। |
स्क्रीन मैप
इस पेज में शामिल module की हर स्क्रीन, sheet और tab के लिए एक पंक्ति।
| स्क्रीन | वहाँ कैसे पहुँचें | आप क्या कर सकते हैं |
|---|---|---|
| Database Manager (शुरुआती स्क्रीन) | Tools → Database, palette, Home या Open in Database | My Connections खोलें, local इंजन शुरू या बंद करें, उसे Manage करें, Use in project, Monitoring या Schema Designer खोलें। |
| Databases (connection की सूची) | My Connections, या title switch में All connections | favourites, local, cloud और custom connections देखें; किसी को खोलें, edit, duplicate, test, favourite या delete करें; + से server जोड़ें। |
| New Connection / Edit Connection | +, card का ⋮, या Supabase project पर Use a direct connection | connection string parse करें, ब्योरे भरें, TLS और SSH tunnel सेट करें, Test Connection, Save। |
| Tables | किसी connection पर टैप करें, या Tools → Tables | tables और views खोजें, data या structure खोलें, Create Table, import, export। |
| Data (viewer) | किसी table या view पर टैप करें | Filter, Sort, Columns, Views, cells edit करें, rows select करें, Copy As, Export, Insert Row, column जोड़ें। |
| Row Detail | किसी row पर टैप करें | एक row को form की तरह पढ़ें और edit करें, Copy JSON। |
| Table Detail | ⋮ → Table Detail, या table पर Structure | columns, indexes, keys, triggers और DDL; Rename, Truncate, Drop Table। |
| Create Table | Create Table या Tools → New table | 15 column types और PK, AI, NN, UQ flags के साथ table define करें। |
| SQL Console | Tools → SQL console | SQL लिखें और चलाएँ, AI से पूछें, parameters और tabs इस्तेमाल करें, results copy या export करें, Explain। |
| Query plan | Tools → Execution plan, या Explain | plan को tree की तरह देखें, Run it for real से उसे मापें, index suggestions और AI की व्याख्या पाएँ। |
| Schema Tree | Tools → Schema tree | database → tables → columns और indexes ब्राउज़ करें। |
| ER Diagram | Tools → ER diagram | tables और relations के diagram को pinch और drag करें, Export Diagram से PNG बनाएँ, Edit as design। |
| Schema Diff | Tools → Compare schemas (Pro) | Save Snapshot, Run Diff, Generate Migration। |
| Backup & Restore | Tools → Backups | local PostgreSQL के dumps का backup, restore, import और export; backups schedule करें (Pro)। |
| Engine | Manage, title switch में Engine, या Tools → Engine settings, Extensions, Server log | local PostgreSQL के Health, Extensions, Log और Settings। |
| Schema Designer और नए schema का wizard | शुरुआती स्क्रीन, या Tools → Schema designer | schema projects की सूची देखें, बनाएँ (3-step wizard, 6 templates), duplicate और delete करें। |
| Schema editor, table editor और Export Schema | कोई schema project खोलें | tables और relations बनाएँ, columns edit करें, 7 formats में export करें, console में Apply to …। |
| Tools sheet और rail | Grid icon; landscape tablet पर स्थायी | 25 tools में से किसी को भी खोजें और खोलें। |
| Switch database और side panel | title पर टैप करें; tablet पर panel | database या connection बदलें, New Database, Engine, connections और tables खोजें। |
| Use in your project | इंजन कार्ड पर Use in project | connection URL देखें, Reveal, Copy URL, Write .env in the open project। |
| Module की और स्क्रीन | Tools sheet, project lists, Open in Database | Provider accounts के projects, Import Preview, Query History, Saved Queries, Charts, Dashboards, Monitoring, Test data, Security, Audit Log, Sharing, Redis, Firestore और PlanetScale deploy diff: सब डेटाबेस टूल में। |
आप क्या कनेक्ट कर सकते हैं
Module 13 तरह के databases खोलता है। आपके अपने PostgreSQL और MySQL servers वे connections हैं जो आप save करते हैं; provider accounts उन services से आते हैं जिन्हें आप Settings → Integrations → Connected Services (या Backend Manager) में connect करते हैं, और उन्हें network चाहिए। Firestore आपके Firebase project का इस्तेमाल करता है।
| इंजन | यह कैसे कनेक्ट होता है | आप क्या कर सकते हैं |
|---|---|---|
| PostgreSQL (local) | ऐप के अंदर का इंजन: 127.0.0.1:5433 पर PostgreSQL 18.2, किसी account की ज़रूरत नहीं। सिर्फ़ 64-bit ARM फ़ोन पर। | इस पेज की हर चीज़, साथ में engine settings, extensions, server log, restore वाले backups और Use in project। |
| PostgreSQL (आपका server) | सीधे आपके host से, वैकल्पिक TLS और SSH tunnel के साथ। | Tables, data, SQL console, plans, tables बनाना, ER diagram, schema tools। |
| MySQL / MariaDB | PocketCode का अपना MySQL client, वैकल्पिक TLS और SSH tunnel के साथ। | वही सब, सिवाय इसके कि यह indexes, foreign keys या triggers की सूची नहीं देता और इसके plans अनुमानित होते हैं। |
| Neon | आपका Neon account। जब ऐप आपके account से project का connection पढ़ सकता है तब SQL JDBC पर चलता है, वरना Neon की HTTP API पर। | Read-only guard वाला SQL console, tables, data, plans, ER diagram। |
| Supabase | आपका Supabase account; SQL इसकी API से हर schema में चलता है। password देने पर Use a direct connection एक असली PostgreSQL connection जोड़ देता है। | Neon जैसा ही। |
| PlanetScale | आपका account databases और branches की सूची देता है; एक branch पूरे certificate checks के साथ MySQL connection की तरह खुलती है। | MySQL / MariaDB जैसा। Branch schema, schema check और deploy-request diff डेटाबेस टूल में हैं। |
| Turso | आपका Turso account; SQL Turso की HTTP API से जाता है। | SQL console, tables, data, ER diagram (SQLite plans में costs नहीं होते)। |
| Cloudflare D1 | आपका Cloudflare account; Turso की तरह SQL D1 की API से जाता है। | Turso जैसा ही। |
| MongoDB Atlas | आपका Atlas account clusters की सूची देता है; database user और password आप खुद डालते हैं। | Collections और counts, डेटाबेस टूल में। SQL console नहीं। |
| Upstash Redis | आपका Upstash account; database खोलने पर यह असली Redis database की तरह connect होता है। | Redis tools, डेटाबेस टूल में। SQL console नहीं। |
| MongoDB | PocketCode का अपना MongoDB client, SCRAM authentication और TLS के साथ। | Collections और counts, डेटाबेस टूल में। |
| Redis | PocketCode का अपना Redis client, TLS के साथ। | Key browser, CLI और monitor, डेटाबेस टूल में। |
| Cloud Firestore | Settings → Integrations में आपका Firebase project, या Backend Manager का Google session। | Browse और query, डेटाबेस टूल में। |
आपके फ़ोन पर PostgreSQL
यह इंजन Android के लिए compile किया गया PostgreSQL 18.2 है, जो ऐप के अंदर पैक है, 64-bit ARM फ़ोन (arm64-v8a) के लिए। यह सिर्फ़ फ़ोन पर सुनता है (127.0.0.1, port 5433, user postgres) और TCP पर हमेशा password माँगता है (SCRAM-SHA-256); password random होता है, encrypted रखा जाता है, और उसके बिना इंजन शुरू होने से मना कर देता है। किसी चीज़ को root, Termux या network की ज़रूरत नहीं।
इसे शुरू करें
शुरुआती स्क्रीन से।
- 1Local Database पर टैप करें। पहली बार ऐप इंजन को unpack करता है और database cluster बनाता है, फिर server शुरू करके tables की सूची खोल देता है।
- 2इसे रोकने के लिए इंजन कार्ड पर Stop पर टैप करें। फिर से शुरू करने के लिए Start।
- 3जिन स्क्रीन को इंजन चाहिए (Tables, Data, SQL console, Execution plan, Schema tree, ER diagram और अन्य), इंजन बंद होने पर वे Engine stopped और एक Start बटन दिखाती हैं: “Start the local PostgreSQL engine to work with its tables.”
initdb चलता है ताकि cluster बन सके (इसे 10 मिनट तक की छूट है); यह सिर्फ़ एक बार होता है। ऐप इंजन को background में चालू नहीं रखता: जब आप बाहर निकलते हैं तो वह PostgreSQL से checkpoint लिखवाता है, और Android बाद में process को रोक सकता है। पहली बार चलने के steps (“Preparing…”, “Extracting…”, “Verifying…”) और Running / Stopped लेबल हर भाषा में अंग्रेज़ी में हैं।आप यह नहीं कर सकते, और क्यों
- इंजन background में नहीं रहता: Android बिना चेतावनी के process को kill कर सकता है, इसलिए लौटने पर कार्ड Stopped दिखा सकता है और आपको Start पर टैप करना पड़ता है। Google Play माँग करता है कि foreground service का एक declared type और दिखने वाला उद्देश्य हो, और “PostgreSQL को ज़िंदा रखना” इनमें से किसी में फ़िट नहीं बैठता।Google Play
- इंजन सिर्फ़
arm64-v8aके लिए आता है। x86 पर (emulators, x86 Chromebooks) यह उपलब्ध नहीं है।डिवाइस
इंजन स्क्रीन
इसे इंजन कार्ड पर Manage से या title switch में Engine से खोलें। Tools में Engine settings, Extensions और Server log वही स्क्रीन किसी tab पर खोलते हैं (Engine settings Health खोलता है, Settings नहीं)। इसमें चार tabs और एक Refresh बटन है। इंजन रुका हो तो हर tab कहता है “The engine is stopped. Start it to see its state.”

Health
चल रहे server की स्थिति।
आप यह कर सकते हैं
- Version, Running for, Data size, Open sessions, Commits, Rollbacks, Cache hits, Checkpoints और Deadlocks पढ़ें।
- Databases के नीचे हर database का आकार देखें, और Delete database से किसी को हटाएँ (पुष्टि के बाद: “Everything in this database is deleted and there is no undo.”)।
- Active sessions देखें और Cancel query या Terminate session से किसी को खत्म करें।
pg_stat_statementsसे Slowest statements देखें (calls, औसत समय, rows)। अगर यह active नहीं है तो ActivateCREATE EXTENSION pg_stat_statementsचलाता है; मापने के लिए आपको Settings में Statement statistics चालू करना और restart भी करना होगा।
आप यह नहीं कर सकते, और क्यों
postgresके लिए (“The “postgres” database is the engine's maintenance database and cannot be deleted.”) और जिस database से आप जुड़े हैं उसके लिए Delete database कभी नहीं दिया जाता।जानबूझकर
Extensions
इस PostgreSQL package में आने वाले extensions: कुल 17 (btree_gin, btree_gist, citext, dblink, fuzzystrmatch, hstore, pageinspect, pg_freespacemap, pg_stat_statements, pg_trgm, pgcrypto, pgrowlocks, plpgsql, postgres_fdw, tablefunc, unaccent, uuid-ossp)।
आप यह कर सकते हैं
- Most useful (
pg_trgm,pgcrypto,uuid-ossp,citext,hstore,pg_stat_statements) और All available देखें, हर एक के नाम, version और विवरण के साथ। - उसके switch से किसी extension को चालू या बंद करें: यह खुले database में
CREATE EXTENSIONयाDROP EXTENSIONचलाता है।
आप यह नहीं कर सकते, और क्यों
- आप दूसरे extensions install नहीं कर सकते: सिर्फ़ package के 17, और चलाने से पहले नाम को उसी सूची से मिलाया जाता है।जानबूझकर
Log
Server का अपना log।
आप यह कर सकते हैं
- server log के आख़िरी 256 KiB पढ़ें, All,
LOG,WARNING,ERRORयाFATALसे filter करके। - इसे Copy करें, या text की तरह Share करें।
आप यह नहीं कर सकते, और क्यों
—
Settings
इंजन कितनी memory लेता है और उसकी writes कितनी सुरक्षित हैं। बदलाव save करने पर लागू होते हैं: इंजन restart होता है।
आप यह कर सकते हैं
- memory Profile चुनें: Light, Balanced या Powerful। उसके नीचे की पंक्ति बताती है कि वह क्या सेट करता है, और Detected RAM बताता है कि फ़ोन क्या report करता है।
- Durability और Statement statistics को बदलें (“Records every statement so Health can show the slowest ones. Needs a restart.”)।
- Copy URL पूरा connection URL copy करता है, password समेत।
- Save (सिर्फ़ बदलाव होने पर चालू; save करके restart करता है: “Settings applied — engine restarted.”) और Restart engine।
आप यह नहीं कर सकते, और क्यों
- Port
5433पर तय है और इंजन सिर्फ़127.0.0.1पर सुनता है: यह कभी network पर उजागर नहीं होता।जानबूझकर - Powerful सिर्फ़ तब दिया जाता है जब Android 8 GiB या उससे ज़्यादा RAM बताता है।डिवाइस


Memory profiles
| Profile | यह क्या सेट करता है |
|---|---|
| Light | 16 MB shared memory · हर sort के लिए 2 MB · 10 connections तक · 128 MB effective_cache_size · 2 workers। 6 GiB से कम RAM पर default। |
| Balanced | 64 MB shared memory · हर sort के लिए 4 MB · 20 connections तक · 512 MB effective_cache_size · 3 workers। 6 GiB से default। |
| Powerful | 128 MB shared memory · हर sort के लिए 8 MB · 30 connections तक · 1 GB effective_cache_size · 4 workers। 8 GiB या उससे ज़्यादा चाहिए। |
RAM वह कुल मात्रा है जो Android बताता है (ActivityManager.totalMem), GiB में गिनी हुई: “8 GB” बताकर बिकने वाला फ़ोन इससे कम report कर सकता है और Powerful नहीं दे सकता। जो saved profile फ़ोन अब संभाल नहीं सकता, उसे घटा दिया जाता है। हमेशा: कोई parallel queries नहीं (max_parallel_workers = 0) और time zone UTC।
Durability
- On (default):
full_page_writes = onऔरsynchronous_commit = off। अगर फ़ोन की बिजली चली जाए या Android ऐप को kill कर दे, तो PostgreSQL खुद recover हो जाता है, पर committed transactions के आख़िरी कुछ milliseconds खो सकते हैं; कुछ भी corrupt नहीं होता। - Off: तेज़, पर
full_page_writes = off: लिखते समय crash होने पर database corrupt हो सकता है और वापसी का कोई रास्ता नहीं बचता। स्क्रीन आपको amber रंग में चेतावनी देती है। जब तक data दोबारा न बनाया जा सके, इसे चालू ही रखें।
एक से ज़्यादा database
Local इंजन कई databases रख सकता है।
आप यह कर सकते हैं
- Title पर टैप करें और New Database चुनें; Database name लिखें और Create पर टैप करें। नामों में अक्षर, अंक और
_ही रहते हैं। ऐप तुरंत नए database पर switch हो जाता है। - हर database उसी switch में Databases के नीचे दिखता है; बदलने के लिए किसी पर टैप करें। Extensions, tables और queries खुले database पर लागू होते हैं।
आप यह नहीं कर सकते, और क्यों
- Free पर इंजन में एक ही database (
postgres) रहता है, इसलिए New Database सीधे Pro wall खोल देता है; dialog और tool पर Pro badge होता है।Pro - सिर्फ़ local इंजन में databases बदले जा सकते हैं; बाकी हर connection का एक ही तय database होता है।जानबूझकर
अपने कोड से इस्तेमाल करें
इंजन कार्ड पर Use in project (इंजन चल रहा हो तब) Use in your project sheet खोलता है।
- 1Sheet Connection URL दिखाती है, password छिपा हुआ:
postgresql://postgres:***@127.0.0.1:5433/<database>। - 2Reveal password दिखाता है और Hide उसे फिर छिपा देता है। Copy URL वही copy करता है जो sheet दिखा रही है, यानी जब तक आप Reveal पर टैप नहीं करते, यह छिपा हुआ version copy करता है। इंजन के Settings tab का Copy URL हमेशा पूरा URL copy करता है।
- 3Write .env in the open project पूछता है “Write .env?” और Write पर टैप करने पर
DATABASE_URLको project की.envमें डाल देता है: यह पहले से मौजूद पहलेDATABASE_URLको बदलता है (duplicates हटा दिए जाते हैं, commented वाला अनदेखा रहता है) और फ़ाइल का बाकी हिस्सा जस का तस रखता है। अगर फ़ाइल या.gitफ़ोल्डर मौजूद है, तो.envको.gitignoreमें जोड़ दिया जाता है।
आप यह नहीं कर सकते, और क्यों
- Biometric lock चालू होने पर भी न Reveal और न Copy URL फ़िंगरप्रिंट माँगता है।अभी नहीं
- इंजन रुका हो तो कोई URL नहीं होता (“The local engine is stopped, so there is no connection to hand out. Start it and come back.”), और कोई project खुला न हो तो लिखने की कोई जगह नहीं होती (“No project is open, so there is nowhere to write a .env file.”)।जानबूझकर
psqlयाpgpassनहीं है: password इंजन से सिर्फ़ इसी URL या environment variables के ज़रिए बाहर जाता है।जानबूझकर
टर्मिनल और Node
इंजन चलते समय लोकल टर्मिनल और Node scripts को उनके environment में DATABASE_URL, PGHOST, PGPORT, PGUSER, PGPASSWORD और PGDATABASE मिलते हैं। किसी project में npm i pg के साथ, new Client() बिना किसी configuration के कनेक्ट हो जाता है। टर्मिनल में एक तैयार snippet भी है, Local PostgreSQL (Node)।
Variables session शुरू होते समय पढ़े जाते हैं: इंजन शुरू करने के बाद नया session खोलें। SSH sessions को ये नहीं मिलते। Terminal में psql या pg_dump नहीं है; backups Backups tool से होते हैं।
कनेक्शन
My Connections (जिसका title Databases है) वह सब सूचीबद्ध करता है जो module खोल सकता है। connections खोलना और save करना हर type के लिए एक जैसा है; हर type खुलने के बाद क्या करता है, यह “Connection types” के नीचे की table में है।
Connection की सूची
इसे शुरुआती स्क्रीन के My Connections से या title switch के All connections से खोलें।
आप यह कर सकते हैं
- अपने connections को sections में देखें: Favourites, Local Databases, Cloud Databases और Custom Connections, हर एक के साथ गिनती। हर कार्ड इंजन का logo, नाम, आंशिक रूप से छिपा host (
••.••••.empresa.com:5432), text में environment (group या colour label के PROD से शुरू होने पर लालPROD) और एक status dot दिखाता है। - कार्ड पर टैप करके उसे खोलें: local इंजन और आपके servers अपनी tables खोलते हैं, provider accounts अपने projects खोलते हैं, Redis और Firestore अपने browsers खोलते हैं।
- server जोड़ने के लिए + (New Connection) पर टैप करें।
- कार्ड के ⋮ का इस्तेमाल करें: Edit Connection, Duplicate (नाम में “ (Copy)” जोड़ता है), Test Connection, Add to favourites / Remove from favourites और Delete (“Delete connection …? This cannot be undone.”)। Delete करने पर stored credential भी मिट जाता है और MySQL की तरह खोली गई PlanetScale branch के लिए आपके PlanetScale account में उसका branch password रद्द कर दिया जाता है।
- अपने connections को अपने PocketCode account में रखना। Settings के Settings Sync dialog में Enable Sync चालू हो (Cloud Sync, Pro feature) और Connections (SSH/DB) पर tick हो, तो अपने किसी server को save या edit करना, PlanetScale branch को MySQL के रूप में खोलना और connection को delete करना आपके account को भी अपडेट करता है। सिर्फ़ metadata जाता है: नाम, host, port, engine और group label; user, password, TLS settings या ऐप अलग से जो कुछ रखता है, वह कभी नहीं। Cloud Sync बंद हो, या वह box tick न हो, तो कुछ नहीं भेजा जाता। बिना host वाले connections भी नहीं भेजे जाते।
आप यह नहीं कर सकते, और क्यों
- Local इंजन का connection edit या delete नहीं किया जा सकता: “The local PostgreSQL connection is managed by the app: its host, port and user cannot be changed, and it cannot be deleted.” हाँ, यह Duplicate, Test Connection और favourites देता है।जानबूझकर
- Free पर आपका अपना दूसरा connection save करना (या duplicate करके save करना) Pro wall खोल देता है। Local इंजन, provider accounts और Open in Database से बने in-memory connections (Upstash, DigitalOcean) गिने नहीं जाते। PlanetScale branch खोलना, और Sharing में Open… तथा Paste, इसी सीमा को मानते हैं।Pro

New Connection और Edit Connection
Servers के लिए और उन provider types के लिए form जिन्हें आप हाथ से भरना चाहते हैं। यह Neon PostgreSQL type पर खुलता है।
- 1My Connections में + (New Connection) पर टैप करें।
- 2Connection String में URL paste करें और Parse Connection String पर टैप करें। यह
postgres://,postgresql://,mysql://,mariadb://,libsql://,turso://,redis://,rediss://,mongodb://औरmongodb+srv://समझता है,jdbc:prefix के साथ या बिना; यह%40जैसे escapes, IPv6 hosts और MongoDB replica lists को decode करता है।rediss,mongodb+srvऔरlibsqlTLS चालू कर देते हैं। - 3या Connection Name, Database Type, Host, Port, Database (Redis के लिए
SELECTका index), Username और Password भरें। - 4Appearance के नीचे एक Color चुनें (None, Production, Staging, Development, Testing, Custom, Local) और एक Group।
- 5SSL / TLS सेट करें और, अगर ज़रूरत हो, SSH Tunnel भी (दोनों नीचे हैं)।
- 6Test Connection पर टैप करें। नतीजा Last test के नीचे स्क्रीन पर बना रहता है, server के Answer के साथ और, अगर काम किया हो, Latency के साथ।
- 7Save पर टैप करें। password Android के encrypted storage में जाता है और connection फ़ाइल में कभी नहीं रहता। किसी connection को edit करते समय saved password रखने के लिए Password खाली छोड़ दें।
आप यह कर सकते हैं
- Database Type selector में PostgreSQL (Local) (सिर्फ़ जहाँ इंजन आता है), PostgreSQL, MySQL / MariaDB, Neon PostgreSQL, Supabase, PlanetScale MySQL, MongoDB Atlas, Turso SQLite, Upstash Redis, Redis और MongoDB मिलते हैं। Cloudflare D1 और Cloud Firestore selector में नहीं हैं: वे अपने account के ज़रिए आते हैं।
- Test Connection सच में test करता है: local इंजन
SELECT version()से; PostgreSQL, MySQL और PlanetScale version और latency के साथ (“Connected — …”); Neon और Supabase projects की सूची बनाकर (“Connected — N projects”); MongoDB और Redis असलीpingसे, TLS और authentication समेत।
आप यह नहीं कर सकते, और क्यों
- Turso, Upstash, Atlas और D1 को form से test नहीं किया जा सकता: “… cannot be tested from the app yet (no driver).”अभी नहीं
- Free पर दूसरे connection पर Save Pro wall खोल देता है।Pro
TLS
Use TLS SSL / TLS के नीचे है। PostgreSQL और MySQL / MariaDB पर, चालू करने के बाद form दो modes देता है और Verify server पर शुरू होता है।
आप यह कर सकते हैं
- Verify server: server certificate को उन authorities से मिलाया जाता है जिन पर आपका फ़ोन भरोसा करता है, इसलिए public CA का certificate बिना किसी फ़ाइल के चलता है। अगर आपका server अपना certificate इस्तेमाल करता है, तो Choose CA certificate… से उसका CA चुनें (फ़ाइल ऐप के private storage में copy हो जाती है)।
- Verify Hostname (default रूप से चालू) host name भी जाँचता है; बंद करने पर सिर्फ़ CA जाँचा जाता है।
- Encrypt only (no verification): traffic को encrypt करता है पर यह नहीं जाँचता कि जवाब कौन दे रहा है। एक लाल चेतावनी बताती है कि उसी network पर कोई आपके server की नक़ल कर सकता है; इसे सिर्फ़ self-signed certificate के लिए इस्तेमाल करें।
आप यह नहीं कर सकते, और क्यों
- Form में Disable, Allow या Prefer नहीं मिलता। पुराने mode के साथ save किया गया connection उस mode को एक अतिरिक्त chip की तरह दिखाता है, जब तक आप दूसरा चुन न लें।जानबूझकर
- Redis और MongoDB पर, Use TLS हमेशा certificate को validate करता है: Encrypt-only का कोई विकल्प नहीं है।जानबूझकर
SSH tunnel
SSH Tunnel → Use SSH tunnel jump host के ज़रिए database तक पहुँचता है: SSH Host, SSH Port, SSH User और एक Password या Private Key (Choose private key…)।
आप यह कर सकते हैं
- Tunnel एक local port को database तक forward करता है जैसा jump host उसे देखता है, इसलिए आपके डाले हुए database host और port वही हैं जिन तक jump host पहुँचता है।
- जब आप पहली बार किसी jump host तक पहुँचते हैं तो ऐप “First time on this server. Fingerprint: …” दिखाता है और उसे save कर लेता है। अगर key बाद में बदल जाए, तो “The SSH server key has changed. Connection stopped: the server may have been rebuilt, or someone may be in the middle.” दिखता है, और कुछ भेजा नहीं जाता।
आप यह नहीं कर सकते, और क्यों
- सिर्फ़ PostgreSQL और MySQL / MariaDB tunnel इस्तेमाल करते हैं। switch हर type के form पर दिखता है, पर MongoDB, Redis, Neon और बाकी पर उसका कोई असर नहीं होता।अभी नहीं
- Passphrase वाली private keys काम नहीं करतीं: form में passphrase का कोई field नहीं है।जानबूझकर
- Android पर कोई SSH agent नहीं है, और सिर्फ़ एक ही local port forward है: chained jumps नहीं।जानबूझकर
Connection types
हर type को connect करने के बाद उसे खोलने पर क्या होता है।
| प्रकार | क्या होता है |
|---|---|
| Neon PostgreSQL | एक project चुनें। जब ऐप आपके account से project का connection पढ़ सकता है तब SQL पूरे certificate checks के साथ JDBC पर चलता है, वरना Neon की HTTP API पर (“No direct connection to this Neon project — running over its HTTP API instead. Multi-statement transactions and a real EXPLAIN ANALYZE aren't available this way.”)। SQL उन projects पर काम करता है जिनमें default neondb database और neondb_owner role हो। |
| Supabase | एक project चुनें; SQL API से हर schema में चलता है (एक से ज़्यादा होने पर Schema chips दिखते हैं)। API database password नहीं देती, इसलिए project स्क्रीन पर Use a direct connection pooler के host, port और user से भरा form खोलता है: password एक बार डालें और उसे सामान्य PostgreSQL connection की तरह save करें। |
| PlanetScale MySQL | आपका account databases और Branches की सूची देता है। किसी branch पर टैप करने से आपके PlanetScale account में एक branch password बनता है और branch पूरे certificate checks के साथ MySQL connection की तरह खुलती है। Free पर, जो branch आपने अभी तक नहीं खोली वह आपके अपने एक connection में गिनी जाती है: एक पहले से सेव हो तो टैप करने पर Database Pro window खुलती है और कोई password नहीं बनता। उस connection को delete करने पर password रद्द हो जाता है; अगर रद्द करना fail हो, तो ऐप आपको PlanetScale dashboard में ऐसा करने को कहता है। |
| Turso SQLite | आपका अकाउंट databases की सूची देता है; SQL Turso की HTTP API से जाता है। |
| Cloudflare D1 | आपका account databases की सूची देता है (D1 हमेशा सूची में होता है) और सीधे उसकी tables पर खुलता है; SQL D1 की API से जाता है। |
| MongoDB Atlas | आपका account clusters की सूची देता है। एक चुनने पर SRV host भरा हुआ form खुलता है और database user व password आप खुद डालते हैं (Atlas इन्हें नहीं देता)। mongodb+srv:// host को dns.google पर DNS over HTTPS से resolve किया जाता है, और वह न चले तो cloudflare-dns.com पर। |
| Upstash Redis | आपका account databases की सूची देता है; किसी को खोलना असली Redis database की तरह connect होता है, या REST से जब Upstash की API Redis password न दे। Connection memory में रहता है। |
| MongoDB, Redis, Cloud Firestore | इनके browsers और tools डेटाबेस टूल में हैं। |
टेबल और डेटा
Table खोलने के लिए उस पर टैप करें। हर पेज में 100 rows होती हैं, primary key के क्रम में, इसलिए जिस row को आप edit करते हैं वह अपनी जगह पर ही रहती है।
Table की सूची
खुले connection की tables और views। किसी connection पर टैप करके या Tools → Tables से खोलें।
आप यह कर सकते हैं
- Search tables… से खोजें। सूची में Tables हैं (हर एक के साथ “~N rows · size”, जहाँ
~अनुमानित गिनती दर्शाता है, और लागू होने पर System badge) और Views; PlanetScale Branches जोड़ता है और Supabase, एक से ज़्यादा schema होने पर, Schema chips। - किसी table या view पर टैप करके उसका data खोलें। हर पंक्ति का ⋮ Data, Structure, Export और favourites देता है।
- Table form खोलने के लिए + (Create Table) पर टैप करें।
- सूची के ⋮ में Import CSV है (यह import preview खोलता है, जो CSV, TSV, JSON, NDJSON, SQL और XLSX मानता है; डेटाबेस टूल देखें) और, सिर्फ़ local इंजन पर, Import from Clipboard और Schema Diff।
आप यह नहीं कर सकते, और क्यों
- Create Table local इंजन, PostgreSQL servers और MySQL servers (और खोली गई PlanetScale branches) पर मिलता है; Neon, Supabase, Turso, D1 या PlanetScale account पर नहीं। वहाँ console में
CREATE TABLEचलाएँ।जानबूझकर - Free पर, connection में 4 tables होने पर Create Table पर Pro badge होता है, और पाँचवीं table बनाना (form से, “Create table” के साथ import करके, या console में
CREATE TABLEसे) Pro wall खोल देता है।Pro - MySQL / MariaDB indexes, foreign keys या triggers की सूची नहीं देता (“… does not expose index metadata.”), और इसकी row counts catalog का अनुमान होती हैं।जानबूझकर
Data viewer
Header में table दिखती है; subtitle में database · connection। Row count हर table और filters के हर सेट के लिए एक बार गिनी जाती है।
आप यह कर सकते हैं
- ऊपरी bar में Filter, Sort, Columns, Views, एक refresh icon, range (
1-100 of 240, या कुल गिनती अज्ञात होने पर Page N) और Previous / Next हैं। - Sort करने के लिए column header पर टैप करें; उसे देर तक दबाने पर Freeze column / Unfreeze column, Fit widths, Reset widths और Compact / Comfortable rows मिलते हैं।
- किसी cell को देर तक दबाएँ: अगर वह primary key का हिस्सा नहीं है तो आप उसे edit करते हैं; अगर है, तो rows select करना शुरू होता है। Row Detail खोलने के लिए row पर टैप करें।
- Header के ⋮ में Insert Row, Add column, Table Detail और Export हैं।
- Insert Row एक form खोलता है जिसमें हर column के लिए एक field होती है, और उस पर column का नाम, type और (key हो तो) PK लिखा होता है। कोई field खाली छोड़ें तो column अपनी default value (या
NULL, या auto-increment) रखता है। Stage rowINSERTको queue में डालता है (कम से कम एक field भरनी होगी, वरना ऐप बताता है) और Apply उसे चलाता है। यह बिना primary key वाली table पर भी चलता है।
आप यह नहीं कर सकते, और क्यों
- Edit और delete के लिए काम लायक primary key चाहिए (और row में कोई primary key
NULLपर नहीं होनी चाहिए); वरना ऐप rows को सुरक्षित रूप से पहचान नहीं सकता और कुछ लागू नहीं करता। Insert Row को इसकी ज़रूरत नहीं।जानबूझकर - Primary key को cell-by-cell edit नहीं किया जाता: उस पर लंबा दबाने से row select हो जाती है।जानबूझकर
- Read-only चालू होने पर Neon, Supabase, Turso और D1 पर edits, deletes और Drop / Truncate / Rename रोक दिए जाते हैं: “Read-only is on for this database, so nothing was changed. Turn it off above the SQL console editor to make changes.”जानबूझकर
- कुल गिनती न होने पर (Supabase, या
COUNT(*)fail होने पर) bar Page N कहता है और Next तभी आगे बढ़ता है जब पेज पूरा भरा हो।थर्ड पार्टी


Filter
Filter सिर्फ़ आपको दिखने वाली चीज़ नहीं, बल्कि database जो लौटाता है उसे सीमित करता है: filters AND से जुड़ते हैं और server पर WHERE की तरह चलते हैं।
आप यह कर सकते हैं
- Select Column चुनें,
=,!=,>,<,>=,<=,LIKE,NOT LIKE,IS NULL,IS NOT NULL,INऔरBETWEENमें से एक Operator (Change), एक Value लिखें और Add Filter पर टैप करें। - Active सूची में Remove filter है, और Clear All उसे खाली कर देता है।
INcomma से अलग किए values लेता है; value को quoted text की तरह compare किया जाता है;IS NULLऔरIS NOT NULLको value नहीं चाहिए।
आप यह नहीं कर सकते, और क्यों
BETWEENoperator सूची में है, पर sheet में सिर्फ़ एक value field है, From / To नहीं: यहBETWEEN 'x' AND ''बनाता है। दो filters इस्तेमाल करें,>=और<=।अभी नहीं
Columns
इस table के columns को दिखाएँ, छिपाएँ और format करें।
आप यह कर सकते हैं
- हर column को चालू या बंद करें, या Show All पर टैप करें।
- किसी column को Format दें: No format, Stars, Progress Bar, Boolean, Link या Color।
- किसी rule से masked column पर एक lock दिखता है (डेटाबेस टूल देखें); Show in clear उसे session भर के लिए खोल देता है, और biometric lock चालू होने पर फ़िंगरप्रिंट माँगता है।
आप यह नहीं कर सकते, और क्यों
—
Saved views
Views किसी table को देखने का एक तरीका याद रखता है।
आप यह कर सकते हैं
- View name के साथ Save current view: यह इस connection और table के लिए filters, sort order, दिखने वाले columns, widths और frozen columns store करता है।
- एक टैप से view लागू करें (Everything, unfiltered उन्हें हटा देता है) या उसे Delete करें।
आप यह नहीं कर सकते, और क्यों
- Saved views इसी device और account पर रहते हैं: Sharing connections और saved queries export करता है, views नहीं।जानबूझकर
Cells edit करें और बदलाव लागू करें
Edits आपके लागू करने तक queue में इंतज़ार करते हैं।
आप यह कर सकते हैं
- ऐसे cell को देर तक दबाएँ जो primary key का हिस्सा नहीं है, Value बदलें या NULL चालू करें, और Save पर टैप करें। Cell highlight हो जाता है और नीचे “N changes” कहती एक bar आ जाती है।
- See SQL सटीक statements दिखाता है (
UPDATE … SET col = value WHERE <every primary-key column>), Discard उन्हें छोड़ देता है और Apply उन्हें चलाता है।
आप यह नहीं कर सकते, और क्यों
- Apply statements एक-एक करके चलाता है और पहली error पर रुक जाता है, बिना transaction के: “Applied %1$d of %2$d: …”। error से पहले वाले लागू ही रहते हैं।जानबूझकर
- Pending SQL को edit नहीं किया जा सकता, सिर्फ़ लागू या discard किया जा सकता है।जानबूझकर
Row detail
किसी row पर टैप करें (जब कोई selection सक्रिय न हो)। Landscape tablet पर यह grid को बदलने के बजाय उसके बगल में pane की तरह खुलता है।
आप यह कर सकते हैं
- Row की primary key (या “Row N”) पढ़ें और हर value को text या
nullकी तरह copy करने के लिए Copy JSON पर टैप करें। - हर column के लिए एक field edit करें, हर एक पर उसका type और
PK,FK,NOT NULLbadges लिखे होते हैं, nullable columns पर एक NULL switch और JSON के लिए multi-line monospaced box होता है। - Footer “No changes” या “N changes” कहता है; Save सिर्फ़ उन्हीं fields को queue करके लागू करता है जिन्हें आपने बदला।
आप यह नहीं कर सकते, और क्यों
- यहाँ पिछली / अगली row पर जाने की सुविधा नहीं है और यहाँ से delete भी नहीं होता; काम लायक primary key के बिना यह save नहीं करता।जानबूझकर
Rows चुनें
Selecting शुरू करने के लिए primary key column के किसी cell को देर तक दबाएँ।
आप यह कर सकते हैं
- Checkboxes से rows पर निशान लगाएँ; bar “N selected” कहती है और उसमें Clear है।
- Copy As rows को clipboard पर CSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full) या Markdown के रूप में copy करता है।
- Export वही formats देता है और साथ में Excel (XLSX), एक फ़ाइल लिखता है और system share sheet खोलता है।
- Delete हर row के लिए एक
DELETE … WHERE <primary key>queue करता है, safe mode से गुज़रता है और Apply का इंतज़ार करता है।
आप यह नहीं कर सकते, और क्यों
- यहाँ Export एक फ़ाइल share करता है और destination नहीं पूछता; folder चुनने के लिए ⋮ → Export इस्तेमाल करें।जानबूझकर


Column जोड़ें
⋮ → Add column New column खोलता है।
आप यह कर सकते हैं
- Name, एक type (वही 15 जो Create Table में हैं), NN और UQ chips और एक Default भरें; preview
name TYPE NOT NULL UNIQUEदिखाता है। - Connection की dialect में
ALTER TABLE … ADD COLUMNचलाने के लिए Add column पर टैप करें।
आप यह नहीं कर सकते, और क्यों
- जिस table में rows हैं, वहाँ
NOT NULLcolumn को default चाहिए, वरना बटन disabled रहता है और कहता है: “The table already has N rows. A NOT NULL column needs a default value — otherwise the engine has nothing to put in them.”जानबूझकर - इस form में
PKयाAIchips नहीं हैं, सिर्फ़NNऔरUQहैं।जानबूझकर
Table detail
Viewer में ⋮ → Table Detail, या table की सूची की किसी पंक्ति पर Structure।
आप यह कर सकते हैं
- पाँच tabs पढ़ें: columns (type,
PK/FK/NOT NULL, Default, References), Indexes, Keys (Primary key और Foreign keys), Triggers और DDL, Copy DDL के साथ। - Danger Zone इस्तेमाल करें: Rename, Truncate और Drop Table। हर एक पुष्टि माँगता है और safe mode से गुज़रता है। SQLite engines (Turso, D1) पर truncate
DELETE FROMचलाता है।
आप यह नहीं कर सकते, और क्यों
- जब कोई engine indexes, keys, triggers या DDL नहीं देता, तो tab खाली सूची दिखाने के बजाय यह बता देता है (“This engine does not return the DDL of a table.”)।जानबूझकर
- आप यहाँ से indexes, keys या triggers edit नहीं कर सकते।जानबूझकर
- Cloud databases पर Read-only Drop, Truncate और Rename को रोकता है।जानबूझकर
Table बनाएँ
Table की सूची में Create Table, या Tools → New table।
आप यह कर सकते हैं
- एक Table Name लिखें। हर column के लिए Name, एक type (SMALLINT, INTEGER, BIGINT, REAL, DECIMAL(p,s), CHAR(n), VARCHAR(n), TEXT, BLOB, BOOLEAN, DATE, DATETIME, TIMESTAMP, JSON या UUID), PK, AI, NN और UQ chips और एक Default सेट करें। Columns खुलकर जोड़ें और हटाएँ।
- Connection की dialect में
CREATE TABLE IF NOT EXISTSचलाने के लिए Create पर टैप करें (PostgreSQL परSERIAL/BIGSERIALऔरBYTEA, MySQL परAUTO_INCREMENTऔर UUID के लिएCHAR(36))। सूची फिर से load होती है।
आप यह नहीं कर सकते, और क्यों
- Form में foreign keys, indexes या
CHECKconstraints नहीं हैं, सिर्फ़ प्रति-column flags हैं।जानबूझकर - Free पर, 4 tables होने पर Create Pro wall खोल देता है।Pro
Table export करें
⋮ → Export, table की सूची की किसी पंक्ति का ⋮, Tools → Export (सिर्फ़ तब जब कोई table खुली हो), या console results के नीचे Export।
आप यह कर सकते हैं
- एक Format चुनें (CSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full), Markdown या Excel (XLSX)) और, filters चालू हों तो, Rows: Filtered rows (N) या Whole table।
- Save to… पर टैप करें और चुनें कि वह कहाँ जाए। “N rows written” बढ़ता जाता है। Table 1,000 rows के batches में पढ़ी जाती है और row-by-row लिखी जाती है, इसलिए कोई size limit नहीं है।
आप यह नहीं कर सकते, और क्यों
- Console result export करने पर सिर्फ़ स्क्रीन पर मौजूद rows (ज़्यादा से ज़्यादा 500) लिखी जाती हैं और query दोबारा नहीं चलती।जानबूझकर
- जिस table में single-column primary key नहीं है उसे
LIMIT/OFFSETसे पढ़ा जाता है, इसलिए export के दौरान होने वाली writes उसे बिगाड़ सकती हैं; बिना primary key वाली table का क्रम तय नहीं होता।जानबूझकर
SQL console
इसे Tools → SQL console से खोलें। यह उन connections के लिए दिखता है जो SQL चलाते हैं: local इंजन, आपके PostgreSQL और MySQL servers, Neon, Supabase, खोली गई PlanetScale branches, Turso और Cloudflare D1। अगर कोई table खुली है और editor खाली है, तो यह SELECT * FROM <table> LIMIT 50 से शुरू होता है।
Editor
हर dialect के लिए एक ही editor।
आप यह कर सकते हैं
- Line numbers और connection की dialect (PostgreSQL, MySQL या SQLite) में syntax highlighting। Autocorrect और automatic capitals बंद हैं।
- Toolbar में Undo, Redo, Format और AI; ⋮ menu में New Tab, Query History, Saved Queries, Query Parameters (सिर्फ़ जब query में parameters हों) और Smaller text / Larger text हैं।
- दूसरे character से suggestions chips के रूप में दिखते हैं, ज़्यादा से ज़्यादा दस: 5 keywords तक, 5 tables, 3 views, खुली table के 5 columns और 3 functions।
- Keyboard खुला होने पर उसके ऊपर एक key row होती है:
fx(words और dialect के 24 तक functions के बीच बदलता है), symbols( ) , ; = * ' " < > . :, ग्यारह words (SELECT,FROM,WHERE,JOIN,ON,GROUP BY,ORDER BY,LIMIT,INSERT,UPDATE,DELETE) और दाईं ओर टिका हुआ Run। - Layout बदलता है: portrait फ़ोन पर Editor | Results switch, landscape फ़ोन पर खींचे जा सकने वाले divider के साथ दो columns (20–80 %, 50/50 के लिए double-tap), portrait tablet पर 30 / 50 / 70 % rows, और landscape tablet पर tab strip वाले columns।
आप यह नहीं कर सकते, और क्यों
- MongoDB, Redis, Upstash और Firestore में SQL console नहीं है: उनकी स्क्रीन खुद connection है, और यह tool नहीं दिया जाता।जानबूझकर
Run, stop और limits
Run पर टैप करने पर क्या होता है।
आप यह कर सकते हैं
- Run पूरा editor चलाता है (सिर्फ़ selection के लिए
Ctrl+Shift+Enter)। चलते समय Results “Running · N s” कहता है और Run Stop बन जाता है। - बिना
LIMITवाले साधारणSELECTमेंLIMIT 500जुड़ जाता है (यहWITH …,COUNT/SUM/AVG/MIN/MAXवाले selects में, या text में पहले सेLIMITहोने पर नहीं जुड़ता)। Remote connections ज़्यादा से ज़्यादा 500 rows रखते हैं। Local इंजन पर query 30 s बाद काट दी जाती है; remote servers पर socket 60 s इंतज़ार करता है (connect करने के लिए 10 s अलग)। - जो statements कोई row नहीं लौटाते, वे बताते हैं कि क्या हुआ: “Table created · 53 ms”, “3 rows affected · 8 ms”, “Statement executed · …”।
- Local इंजन, आपके PostgreSQL servers और MySQL पर Stop query को server पर cancel कर देता है: “Query cancelled on the server.”
- हर run history (500 entries) और audit log (1,000) में जाता है, और अगर उसने कुछ बनाया या हटाया तो table की सूची फिर से load होती है।
आप यह नहीं कर सकते, और क्यों
- Neon, Supabase, Turso और D1 पर Stop सिर्फ़ इंतज़ार रोकता है: “Stopped waiting for the query. The server may still be running it.”जानबूझकर
- हर run अपना connection खोलता है, इसलिए एक run में
BEGINऔर अगले मेंCOMMITमिलकर transaction नहीं बनाते।जानबूझकर


Safe mode
खतरनाक statement चलाने से पहले console Dangerous Operation दिखाता है (“This will execute a … operation”) सटीक SQL और “Estimated affected rows” के साथ। जब तक आप Execute Anyway पर टैप नहीं करते कुछ नहीं चलता; Cancel उसे छोड़ देता है।
आप यह कर सकते हैं
- यह इन पर चालू होता है: बिना
WHEREकाDELETEयाUPDATE,DROP TABLE,DROP VIEW,DROP INDEX, CTE के अंदर बिनाWHEREकाDELETEऔरTRUNCATEवाला कोई भी text। - MySQL / MariaDB / PlanetScale पर सूची लंबी है:
DROP DATABASE,ALTER TABLE … DROP,RENAME TABLE, user और privilege management (GRANT…),KILL,FLUSH,RESET,LOAD DATA,INTO OUTFILE,SET GLOBAL,SHUTDOWN,REPLACE INTO, plugins औरLOAD_FILE()। - Table का Drop, Truncate और Rename, rows delete करना और इंजन स्क्रीन से database delete करना भी इसी से गुज़रते हैं।
आप यह नहीं कर सकते, और क्यों
- Safe mode का कोई switch नहीं है: यह हमेशा चालू रहता है।जानबूझकर
Parameters
Named parameters किसी query को template बना देते हैं।
- 1Query में named parameters लिखें:
SELECT * FROM orders WHERE status = :status AND total > :min; - 2Run पर टैप करें। चलाने की बजाय console हर नाम के लिए एक field के साथ Query Parameters खोलता है।
- 3Values भरें और Run पर टैप करें। Values quoted text के रूप में भेजी जाती हैं। Editor query को उसके
:namesके साथ रखता है, और history भी।
आप यह नहीं कर सकते, और क्यों
- सिर्फ़
:namevalue माँगता है;@nameऔर$1पहचाने जाते हैं पर prompt नहीं करते। कोई types नहीं हैं: हर value text की तरह जाती है।जानबूझकर
टैब
एक साथ कई queries।
आप यह कर सकते हैं
- ⋮ → New Tab (landscape tablet पर tab strip का +)। फ़ोन पर strip दो या ज़्यादा tabs होने पर दिखती है।
- Switch करने के लिए tab पर टैप करें, बंद करने के लिए ✕, नाम बदलने के लिए देर तक दबाएँ। हर tab अपना SQL और अपना result रखता है, और ऐप बंद करने पर भी tabs बने रहते हैं। कम से कम एक हमेशा रहता है।
आप यह नहीं कर सकते, और क्यों
- Free पर तीसरा tab Pro wall खोल देता है।Pro
Results के साथ क्या करें
Result grid के नीचे actions की एक पंक्ति होती है, और header में एक icon।
| क्रिया | यह क्या करता है |
|---|---|
| Copy As | Clipboard पर CSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full) या Markdown के रूप में। Identifiers उसी तरह quote होते हैं जैसा connection का engine चाहता है (PostgreSQL पर backticks नहीं)। |
| Export | स्क्रीन पर मौजूद rows के साथ Export खोलता है। |
| Charts | Result से एक chart (इसके लिए दो या ज़्यादा columns चाहिए)। डेटाबेस टूल में। |
| Explain | Editor में मौजूद query का execution plan खोलता है। |
| Save Query | इसे Query Name के साथ save करता है। |
| Add to dashboard (header icon) | query चल जाने के बाद उसे dashboard widget की तरह save करता है। डेटाबेस टूल में। |
आप यह नहीं कर सकते, और क्यों
- Free पर, 5 saved queries हो जाने के बाद Save Query Pro wall खोल देता है।Pro
History और saved queries
⋮ → Query History या Saved Queries console में एक sheet खोलता है।
आप यह कर सकते हैं
- किसी entry को editor में load करने के लिए उसे चुनें।
- query को Query Name के साथ save करें, entries Delete करें और saved queries को folders में ले जाएँ (No folder)।
आप यह नहीं कर सकते, और क्यों
- Free पर 5 saved queries; छठी Pro wall खोल देती है।Pro
- History आख़िरी 500 entries रखती है।जानबूझकर
AI से SQL लिखें
Assistant editor के अंदर, आपके कोड के ऊपर रहता है। यह एक प्रस्ताव लिखता है; जब तक आप उसे स्वीकार नहीं करते, editor में कुछ नहीं जाता, और अपने-आप कुछ नहीं चलता।
आप यह कर सकते हैं
- AI पर टैप करें। code के ऊपर Describe the query you need… वाली एक पंक्ति खुलती है; query को अपने शब्दों में बताएँ और Generate पर टैप करें। एक shortcut: अनुरोध को cursor वाली पंक्ति पर comment की तरह लिखें, जैसे
-- customers who ordered this month, और AI पर टैप करें। - Proposal पढ़ें। उसके ऊपर origin है (provider और model, या Offline — generated by rules, not a model), Explanation, और विकल्पों के बीच जाने के तीर; Regenerate दोबारा पूछता है।
- Accept उसे editor में डाल देता है, selection को बदलकर या cursor के नीचे नई पंक्ति पर। Discard editor को जैसा था वैसा छोड़ देता है। विनाशकारी proposal पर “Destructive operation — review carefully” लिखा होता है।
आप यह नहीं कर सकते, और क्यों
- कोई provider connected न हो तो assistant सरल queries के लिए built-in rule generator पर लौट आता है और कारण बताता है: “No AI provider is connected. Connect one in AI settings to have a model write the query.” अगर provider 90 सेकंड से ज़्यादा लगाए: “The AI provider didn't answer within 90 seconds, so no model was used.”नेटवर्क ज़रूरी
- अगर model ऐसा जवाब दे जो SQL नहीं है, तो आप उसका जवाब “The model didn't return SQL” के नीचे देखते हैं, Accept बटन के बिना।जानबूझकर
- यह क्या जानता है: dialect, और 40 तक tables व views के नाम उनके columns समेत (ज़्यादा से ज़्यादा 6,000 characters), ताकि column का नाम
ciudadहो तो यहciudadही लिखे। कोई row data नहीं भेजा जाता। - कौन-सा model: AI settings में SQL assistant के लिए सेट किया गया model, आपकी manual पसंद, या Automatic mode में एक तेज़ model।
- सहमति: किसी provider के पहली बार इस्तेमाल होने पर ऐप कुछ भी भेजने से पहले Send to …? पूछता है।
Cloud databases: Read-only, confirmation और fingerprint
Neon, Supabase, Turso और Cloudflare D1 पर console लिखने से पहले पूछता है। Editor के ऊपर की एक स्थिर पंक्ति में Read-only switch होता है (“Writes are blocked” / “Writes ask before running”)।
आप यह कर सकते हैं
- Read-only by default चालू रहता है, हर database के लिए (project बदलने पर वह फिर चालू हो जाता है): सिर्फ़ reads भेजे जाते हैं। Write चलाने पर कहता है “Read-only is on, so this write wasn't sent. Turn off Read-only above the editor to run it.”
- इसे बंद करने पर हर write “Write to …?” खोलता है जो बताता है कि वह क्या करेगा (table बनाता है, table हटाता है, table खाली करता है, rows insert करता है, मेल खाती rows update करता है, हर row update करता है (WHERE के बिना)…); Run पुष्टि करता है।
- Destructive write (
DROP,TRUNCATE, बिनाWHEREकाDELETEयाUPDATE…) का title “Destructive write to …” होता है, उसका बटन Continue है और फिर वह आपका fingerprint या device PIN माँगता है (“Confirm destructive write”)। जिस फ़ोन में screen lock नहीं है वह पुष्टि पहले से दी हुई मानकर आगे बढ़ता है। - यही switch data grid के edits, Drop / Truncate / Rename और किसी write के मापे गए plan को भी नियंत्रित करता है।
आप यह नहीं कर सकते, और क्यों
- AI chat इस switch का पालन करता है और cloud database पर destructive writes नहीं चला सकता: यह आपको SQL देता है ताकि आप उसे SQL console से चलाएँ।जानबूझकर
Execution plan
Tools → Execution plan, या results के नीचे Explain। इसके लिए editor में एक query होनी चाहिए: “Write a query first — the plan describes how it would run.”
आप यह कर सकते हैं
- Plan को tree की तरह देखें, हर step के लिए cost bar के साथ और सबसे महँगा step लाल रंग में, जिस पर “Estimated by the planner — the query was not run” या “Measured — the query was actually run” लिखा होता है, साथ में “Planning: N ms” और “Execution: N ms”। Step detail के लिए किसी step पर टैप करें (step, table, total cost, own cost, rows, row width)। Refresh icon दोबारा पूछता है और याद रखता है कि वह measured था या नहीं।
- PostgreSQL dialect पर Run it for real पर टैप करें (“Runs the query and measures every step instead of estimating it.”): यानी local इंजन, Neon, Supabase और आपके PostgreSQL servers। अगर statement read-only नहीं है तो यह पूछता है “Run this statement?”: “This is not a read-only statement, and measuring it means running it: it will change your data.”
- जब filter वाला sequential scan हो और कम से कम 100 अनुमानित rows हों (engine अनुमान न दे तो यह न्यूनतम लागू नहीं होता), तब Index suggestions पढ़ें; हर एक में Copy है। “Nothing is created: copy the statement and decide in the console.”
- अपने model से plan समझवाने के लिए Explain with AI पर टैप करें। यह इंजन, query और plan भेजता है, और कहता है “Written by … from the plan JSON. Check it before acting on it.” हर provider के लिए पहली बार यह Send to …? पूछता है।
आप यह नहीं कर सकते, और क्यों
- MySQL / MariaDB / PlanetScale सिर्फ़ अनुमानित plan देते हैं, और SQLite (Turso, D1) बिना costs वाला tree (“This engine does not publish costs: it says what it does, not what it costs.”)। वहाँ Run it for real नहीं दिखता।जानबूझकर
- Cloud database पर, किसी write पर Run it for real Read-only का पालन करता है और अगर वह data नष्ट करता है तो फ़िंगरप्रिंट माँगता है।जानबूझकर
- HTTP से पहुँचे Neon project पर असली
EXPLAIN ANALYZEनहीं है।थर्ड पार्टी - यह कभी index नहीं बनाता; सिर्फ़
CREATE INDEXcopy करता है।जानबूझकर

Schema: tree, ER, designer और compare
Tables, relations और design। Tree, ER diagram, import और compare हर उस connection पर काम करते हैं जो SQL चलाता है और जिसमें tables हैं।
Schema tree
Tools → Schema tree। Landscape tablet पर यही tree side panel में active connection के नीचे लटकता है।
आप यह कर सकते हैं
- Connection का नाम खोलें, फिर Tables (N) और हर table: उसके columns (
name: type, key परPKके साथ) और, जहाँ सूचीबद्ध हों, उसके indexes (name (columns)); Views (N) में views हैं। Count पता होने पर table “(N rows)” कहती है। इस tree के labels हर भाषा में अंग्रेज़ी में हैं। - उस table का data खोलने के लिए किसी table या column पर टैप करें।
- PostgreSQL, Neon, Supabase, Turso और D1 पर indexes सूचीबद्ध होते हैं; MySQL / MariaDB पर नहीं।
आप यह नहीं कर सकते, और क्यों
- स्क्रीन Functions / Procedures, Sequences, Enums / Custom Types और Dependencies sections भी बनाती है, पर वे कभी भरे नहीं जाते।अभी नहीं
- Triggers को जान-बूझकर tree से बाहर रखा गया है।जानबूझकर
ER diagram
Tools → ER diagram। यह tables वाले किसी भी SQL connection की tables और relations बनाता है: local इंजन और आपके PostgreSQL व MySQL servers अपने drivers से, और Neon, Supabase, Turso व D1 SQL से अपना catalog पढ़कर।
आप यह कर सकते हैं
- Canvas को pinch और drag करें। Header “N tables · M relationships” कहता है; zoom out करने पर “Columns hidden — zoom in to read them”। किसी table का data खोलने के लिए उस पर टैप करें।
- Toolbar इस्तेमाल करें: Edit as design (schema को designer में copy करता है), Select Tables (Select All / Clear; कुछ न चुना हो तो मतलब सब), Fit to screen, Auto-arrange, zoom in और out, Color by Schema, Minimap और Export Diagram (theme की background के साथ 2× का PNG; file picker
er-diagram.pngसुझाता है)।
आप यह नहीं कर सकते, और क्यों
- MongoDB, Redis, Upstash और Firestore में ER diagram नहीं है, और यह कभी PocketCode के अपने storage पर नहीं लौटता।जानबूझकर
- Composite foreign keys कई single-column relations की तरह बनाई जाती हैं।अभी नहीं
- Diagram को वहीं edit नहीं किया जा सकता: Edit as design इस्तेमाल करें।जानबूझकर

Schema designer
शुरुआती स्क्रीन से (Schema Designer, किसी connection की ज़रूरत नहीं) या Tools → Schema designer से। Projects ऐप के private storage में JSON फ़ाइलें हैं।
आप यह कर सकते हैं
- Project सूची में Search schemas…, “N tables” और “N relations” वाले cards, Duplicate और Delete वाला ⋮, और New Schema हैं।
- New Schema Project wizard के तीन steps हैं: Project Details (Project Name, description), Target Database (MySQL, PostgreSQL, SQLite, MariaDB, SQL Server या MongoDB) और Start From Template: Empty Schema या Blog (6 tables), E-Commerce (8), Social Network (7), SaaS Platform (7), Chat App (5) या Project Management (7)। Back, Continue, Create Project।
- Editor में tables को drag करें, Zoom to fit, Add table, Undo / Redo, और पहले source column पर फिर target table पर टैप करके relation बनाएँ (1:1, 1:N, N:M; No Action, Cascade, Set Null, Set Default या Restrict)। Project का नाम बदला जा सकता है और एक chip target engine दिखाता है।
- Table editor sheet table का नाम बदलती है, उसका रंग सेट करती है और columns जोड़ती है: नाम, एक type (Select Column Type, suggestions और reserved-word चेतावनी के साथ), Constraints (Primary Key, Auto Inc, Not Null, Unique, Indexed), Length, Precision, Scale, Default, Comment और Add FK।
- Apply to … script को console में खोलता है, बिना चलाए, हर destructive statement पर
-- ⚠का निशान: “Script opened in the console: N statement(s), M marked ⚠. Nothing has been run”।
आप यह नहीं कर सकते, और क्यों
- Apply to … script कभी नहीं चलाता: यह module का सबसे विनाशकारी ऑपरेशन है, इसलिए यह console के safe mode और plan की table limit से गुज़रता है। इसके लिए एक SQL connection चाहिए (“Open a SQL connection to apply this design”) और कम से कम एक table।जानबूझकर
- Designer का अपना कोई Pro gate नहीं है, पर Free पर जब आप script को console में चलाते हैं तो उसके
CREATE TABLEstatements 4 tables की limit से टकराते हैं।Pro - Projects इसी device पर रहते हैं: devices के बीच sync नहीं होते, और MongoDB target सिर्फ़ column types को अनुकूलित करता है।जानबूझकर
Export Schema
Schema editor में Export Export Schema खोलता है।
आप यह कर सकते हैं
- सात formats में से एक चुनें: SQL DDL, Room Entity, Prisma, TypeORM, Django, JSON Schema या DBML, और Generate … पर टैप करें।
- Generated Output पढ़ें (“N lines”), फिर Copy All (“Copied!”) करें या उसे text की तरह Share करें।
आप यह नहीं कर सकते, और क्यों
- यह सिर्फ़ text बनाता है और किसी database को नहीं छूता: console में script पाने के लिए Apply to … इस्तेमाल करें।जानबूझकर
Import schema
Tools → Import schema (कम से कम एक table वाला SQL connection), या ER diagram में Edit as design।
आप यह कर सकते हैं
- खुले database की tables, columns, indexes और foreign keys को designer में लाएँ। उसके बाद यह बताता है कि क्या import नहीं हो सका (“N thing(s) could not be imported”)।
आप यह नहीं कर सकते, और क्यों
- जो engines SQL नहीं बोलते उनके पास import करने के लिए schema नहीं होता (“… does not speak SQL, so it has no schema to import”)।जानबूझकर
- SQLite (Turso, D1) पर indexes import नहीं होते, और composite foreign keys कई single-column keys बनकर आती हैं।अभी नहीं
Schemas की तुलना
Tools → Compare schemas, या table की सूची का ⋮ → Schema Diff (local इंजन)। यह Pro tool है। PlanetScale project पर यही entry आख़िरी deploy request का diff दिखाती है और मुफ़्त है (डेटाबेस टूल देखें)।
आप यह कर सकते हैं
- Save Snapshot पर टैप करें (यह इस connection का schema रखता है: “Schema snapshot saved (N tables)”), schema बदलें, फिर Run Diff।
- Added Tables, Removed Tables और Modified Tables पढ़ें (columns के लिए
+ name: typeऔर− name)। - SQL को console में लिखने के लिए (बिना चलाए) Generate Migration पर टैप करें, engine के हिसाब से quote किया हुआ, नई tables के लिए पूरे
CREATE TABLEके साथ और type व nullability के बदलावों के साथ।
आप यह नहीं कर सकते, और क्यों
- Free पर Tools या menu से इसे खोलना, या Run Diff पर टैप करना, Pro wall खोल देता है।Pro
- यह tables और columns (नाम, type, nullability) की तुलना करता है, indexes, foreign keys, views या sequences की नहीं।जानबूझकर
- स्क्रीन सिर्फ़ जोड़े और हटाए गए columns की सूची देती है; जिस column का type या nullability बदली है वह वहाँ नहीं दिखता, हालाँकि वह migration में होता है।अभी नहीं
बैकअप
Tools → Backups (जिसका title Backup & Restore है) हर connection पर मिलता है, पर सिर्फ़ local PostgreSQL का backup हो सकता है। इसमें तीन tabs हैं: Create, History और Schedule।
Create
Backup ऐप के storage में लिखा जाता है; Your files dumps को अंदर और बाहर ले जाता है।
आप यह कर सकते हैं
- Backup Method चुनें (
pg_dumpयाSQL Dump), एक Note (optional) जोड़ें और Start Backup पर टैप करें (“Written to …”)। - Your files के नीचे, Save to… dump को सीधे आपके चुने document में लिखता है, और Import backup…
.sqlयाpg_dump -Fcफ़ाइल लाता है: methodPGDMPsignature से तय होता है, extension से नहीं। Saving और importing system file picker से होते हैं, इसलिए फ़ाइल वहीं रहती है जहाँ आप चुनें और ऐप uninstall होने पर भी बची रहती है।
आप यह नहीं कर सकते, और क्यों
- दूसरे connections कारण बताते हैं: “<engine> runs on a server, so its backups belong to that provider. PocketCode can only back up databases stored on this device.” या “<engine> is not a SQL database — export its collections/keys instead.”जानबूझकर
- कोई cloud destination (Drive, Firebase) नहीं है: backups folder ऐप का private है, और सिर्फ़ वही बचता है जो Save to… या Export उसके बाहर लिखता है, uninstall के बाद।जानबूझकर
History और restore
हर backup, सबसे नया पहले।
आप यह कर सकते हैं
- हर पंक्ति date, method, “N tables · size” और Imported व Scheduled badges दिखाती है, साथ में Restore, Export और Delete। कुछ न होने पर “No backups yet”; scheduled run fail होने के बाद “The last backup failed”।
- Restore पूछता है “Overwrite the database?”। पहले मौजूदा database की एक copy सेव होती है (
pre_restore_<time>.dump), इसलिए इसे undo किया जा सकता है; नतीजा कहता है “Restored — … Previous database kept as …”।PGDMPdumppg_restoreसे restore होता है; text dump JDBC पर replay होता है।
आप यह नहीं कर सकते, और क्यों
- अगर safety copy fail हो जाए, तो कुछ भी restore नहीं होता।जानबूझकर

Schedule
Automatic backups के लिए एक Pro switch।
आप यह कर सकते हैं
- Scheduled backups चालू करें और Frequency (Every hour, Every 6 hours, Every 12 hours, Daily या Weekly), Time of day (default 3) और Max backups to keep (default 7) सेट करें। यह WorkManager से background में चलता है और battery या storage कम होने पर छोड़ दिया जाता है।
आप यह नहीं कर सकते, और क्यों
- Schedule चालू करना या बदलना Pro है (
SCHEDULED_BACKUP)। Backups बनाना, restore, export, import और delete करना मुफ़्त है।Pro - कोई foreground service और कोई exact alarm नहीं है: system run को टाल या kill कर सकता है, और नतीजा history में दर्ज होता है।Google Play
- Scheduled run local PostgreSQL (आपका आख़िरी खोला database) तभी copy करता है जब उस पल इंजन चल रहा हो; यह उसे कभी शुरू नहीं करता। यह हमेशा PocketCode का अपना internal app database भी copy करता है, एक अलग store में जिसकी history यह स्क्रीन नहीं दिखाती।जानबूझकर
टूल
Grid icon Tools खोलता है: छह sections में 25 tools, एक search box और एक Frequent पंक्ति के साथ। Landscape tablet पर यह एक स्थायी rail है (280 dp, सिमटने पर 72 dp)। जो खुले connection पर लागू नहीं होता वह छिपा दिया जाता है, धूसर नहीं किया जाता: MongoDB, Redis, Upstash या Firestore के साथ सिर्फ़ नौ tools दिखते हैं (Tables, Dashboards, Schema designer, Export, Backups, Monitor, Security, Audit log और Sharing)।
| सेक्शन | टूल |
|---|---|
| Explore | Tables, Schema tree, ER diagram — इसी पेज पर। |
| Query | SQL console और Execution plan — इसी पेज पर। Query history, Saved queries, Charts और Dashboards — डेटाबेस टूल में। |
| Design | Schema designer, New table, Compare schemas (Pro) और Import schema — इसी पेज पर। |
| Data | Export और Backups — इसी पेज पर। Test data और Import — डेटाबेस टूल में। |
| Server | Engine settings, Extensions, Server log और New database (Free पर Pro badge) — इसी पेज पर। Monitor — डेटाबेस टूल में। |
| Security | Security, Audit log और Sharing — डेटाबेस टूल में। |
इंजन का Start और Stop catalog में नहीं हैं: वे इंजन कार्ड और इंजन स्क्रीन पर हैं।
AI चैट से
AI चैट module खोले बिना आपके databases इस्तेमाल कर सकता है। इससे सादे शब्दों में पूछें (“मेरे पास कौन-सी tables हैं?”, “कितने orders refund हुए?”) और यह ये tools बुलाता है:
| टूल | यह क्या करता है |
|---|---|
db_list_connections | Local इंजन और आपके saved connections की सूची देता है, और आपके connect किए cloud services के projects service/project के रूप में। |
db_list_tables | किसी database की tables के नाम। |
db_schema | एक table या सभी tables के columns और types। |
db_query | एक read-only statement चलाता है: SELECT, WITH, EXPLAIN, SHOW या DESCRIBE। जो कुछ भी लिखता है, वह मना कर दिया जाता है। |
db_execute | Data या schema बदलने वाला statement चलाता है। यह पहले आपकी मंज़ूरी माँगता है, जब तक चैट Full access में न हो और Ask before acting outside this device बंद न हो। |
- Tools उस connection पर काम करते हैं जिसे आपने आखिरी बार खोला था, या लोकल इंजन पर जब आपने और कुछ सेट नहीं किया हो। Model सूची से कोई दूसरा connection चुन सकता है।
- Cloud database पर chat console के Read-only switch का पालन करता है और destructive writes नहीं चलाता: यह आपको SQL देता है जिसे आप SQL console से चलाएँ।
- Model को भेजे गए query results असली rows हैं (SQL के लिए ज़्यादा से ज़्यादा 200)। Masking rules chat पर लागू नहीं होते। एक छठा read-only tool,
db_inspect, policies, schema health और saved SQL पढ़ता है: डेटाबेस टूल देखें।
Free और Pro
इस पेज की हर चीज़ free plan पर मिलती है, इन limits के साथ (Pro इन्हें हटा देता है):
| सीमा | Free | Pro |
|---|---|---|
| आपके अपने saved connections | 1 (local इंजन, provider accounts और Open in Database से बने in-memory connections गिने नहीं जाते; Sharing में Open… या Paste से जोड़े गए connections और खोली गई PlanetScale branches गिनी जाती हैं) | असीमित |
| Saved queries | 5 | असीमित |
| Console टैब | 2 | असीमित |
| लोकल इंजन में databases | 1 (postgres) | असीमित |
| प्रति connection tables | 4 (कोई भी engine; बनाना, import करना या CREATE TABLE चलाना गिना जाता है) | असीमित |
Compare schemas (SCHEMA_DIFF) | Pro wall खोलता है | शामिल |
Scheduled backups (SCHEDULED_BACKUP) | Pro wall खोलता है। Backups बनाना, restore, export और import करना मुफ़्त है। | शामिल |
बाकी चीज़ों पर कोई plan limit नहीं है: SSH tunnel, हर import और export format, ER diagram, execution plans (Run it for real समेत), AI features, आपके cloud databases में लिखना, manual backups और restore, इंजन स्क्रीन, monitoring, security, audit और dashboards।
कीबोर्ड शॉर्टकट
सिर्फ़ physical keyboard के साथ, landscape tablet पर, console के अंदर:
| कुंजियाँ | क्रिया |
|---|---|
Ctrl+Enter | चलाएँ |
Ctrl+Shift+Enter | Selection चलाएँ |
Ctrl+T / Ctrl+W | नया टैब / टैब बंद करें |
Ctrl+S | Query सेव करें |
Ctrl+/ | चुनी गई lines को comment या uncomment करें |
प्राइवेसी और सुरक्षा
- कोई PocketCode server नहीं: data ऐप से local इंजन, आपके host (या उसके SSH jump host) या provider की API तक जाता है। दो बातें:
mongodb+srv://cluster का नामdns.googleपर DNS over HTTPS से resolve होता है (फिरcloudflare-dns.com), और AI features वही provider बुलाते हैं जो आपने चुना। आपका data कभी PocketCode server से होकर नहीं गुज़रता। सिर्फ़ Cloud Sync चालू हो और Connections (SSH/DB) पर tick हो, तब आपके connections का metadata (नाम, host, port, engine और group; user, password या TLS कभी नहीं) आपके PocketCode account को जाता है। - चीज़ें कहाँ रहती हैं: connections, saved queries और folders, history (500), audit log (1,000), console tabs, saved views, schema snapshots, SSH host fingerprints और favourites ऐप के private storage में JSON फ़ाइलें हैं, हर account का एक सेट। Schema projects उसी private storage में अलग फ़ाइलें हैं।
- Passwords Android के encrypted storage में रहते हैं, हर account के लिए अलग। Connection फ़ाइल host, port, database और user रखती है, password कभी नहीं। ऐप में Android cloud backup बंद है।
- Local इंजन TCP सिर्फ़ फ़ोन से ही स्वीकार करता है और हमेशा password के साथ (SCRAM-SHA-256)। उसका password random है और encrypted रखा जाता है; बिना password के इंजन शुरू होने से मना करता है। Unix socket ऐप की private directory के अंदर है।
- AI: आपके consent dialog स्वीकार करने से पहले provider को कुछ नहीं भेजा जाता। SQL assistant dialect और आपकी tables व columns के नाम भेजता है (rows नहीं); plan की व्याख्या query और उसका plan भेजती है; chat tools वे rows भेजते हैं जो वे पढ़ते हैं।
- Analytics, चालू होने पर: module engine type, query में लगा समय और लौटी rows की संख्या, export format और row count, और error category report करता है। SQL, नाम या values कभी नहीं।
- Masking और biometric lock का वर्णन डेटाबेस टूल में है।
सीमाएँ
क्या काम नहीं करता, और क्यों, ताकि यह आपको चौंकाए नहीं:
- Local इंजन को 64-bit ARM फ़ोन चाहिए। यह x86 builds (emulators, x86 Chromebooks) में शामिल नहीं है।डिवाइस
- Local MariaDB शामिल नहीं है: code मौजूद है पर कोई MariaDB package साथ में नहीं आता, इसलिए यह कभी दिया नहीं जाता।अभी नहीं
- इंजन background में चालू नहीं रखा जाता; Android उसे रोक सकता है, और scheduled backups WorkManager jobs हैं जिन्हें system टाल सकता है।Google Play
- ऐप में psql या pg_isready नहीं हैं (उनकी readline library GPL-3 है)।जानबूझकर
- Scripts: console पूरा editor एक साथ भेजता है, और हर run अपना connection इस्तेमाल करता है, इसलिए एक run में
BEGINऔर अगले मेंCOMMITमिलकर transaction नहीं बनाते।जानबूझकर - Grid edits एक-एक statement करके लागू होते हैं। अगर कोई fail होता है, तो उससे पहले वाले लागू ही रहते हैं।जानबूझकर
- MySQL / MariaDB: index, foreign key या trigger की सूचियाँ नहीं, अनुमानित row counts,
mysql_native_passwordऔरcaching_sha2_passwordसे authentication (दूसरे का पूरा रास्ता सिर्फ़ TLS पर),ed25519नहीं, औरLOAD DATA LOCAL INFILEकभी नहीं।जानबूझकर - SSH tunnel: सिर्फ़ local port forwarding, सिर्फ़ PostgreSQL और MySQL / MariaDB के लिए, कोई agent नहीं, कोई chained jumps नहीं, passphrase वाली key नहीं।जानबूझकर
- SSH switch हर type के form पर दिखता है पर PostgreSQL और MySQL / MariaDB के बाहर कुछ नहीं करता।अभी नहीं
- Neon: account के ज़रिए SQL उन projects पर चलता है जिनमें default
neondbdatabase औरneondb_ownerrole हो।थर्ड पार्टी - Supabase: इसकी API database password नहीं देती, इसलिए असली PostgreSQL connection के लिए Use a direct connection और एक बार password चाहिए।थर्ड पार्टी
- Provider accounts को network चाहिए और service को Settings → Integrations → Connected Services (या Backend Manager) में connected होना चाहिए।
mongodb+srv://host को DNS over HTTPS भी चाहिए।नेटवर्क ज़रूरी - ER diagram, console और plans MongoDB, Redis, Upstash या Firestore के लिए मौजूद नहीं हैं।जानबूझकर
- Measured plans (Run it for real) सिर्फ़ PostgreSQL dialect पर हैं; MySQL plans अनुमानित हैं और SQLite plans में costs नहीं होते।जानबूझकर
- Backups सिर्फ़ local PostgreSQL को कवर करते हैं। आपके servers और cloud databases के backups उनके provider के पास रहते हैं।जानबूझकर
- Safe mode का कोई switch नहीं: यह हमेशा चालू रहता है।जानबूझकर
- Filter operators:
BETWEENमें सिर्फ़ एक value field है।अभी नहीं - Table की सूची के ⋮ menu में Search Objects अभी results नहीं दिखाता।अभी नहीं
- Schema tree Functions, Sequences, Enums और Dependencies sections बनाता है जो खाली ही रहते हैं।अभी नहीं
- Use in project: Biometric lock चालू होने पर भी Reveal और Copy URL फ़िंगरप्रिंट नहीं माँगते।अभी नहीं
- कुछ texts हर भाषा में अंग्रेज़ी में हैं: इंजन कार्ड पर Running / Stopped और पहली बार चलने के steps (“Preparing…”, “Extracting…”, “Setting up…”, “Installing database…”, “Verifying…”, “Ready”)।अभी नहीं
आम समस्याएँ
Titles वही messages हैं जो ऐप दिखाता है।
“PostgreSQL is not included in this build for your device.”
फ़ोन 64-bit ARM नहीं है, इसलिए लोकल इंजन नहीं चल सकता। Module की बाकी हर चीज़ काम करती है।
“Engine stopped” और “Start the local PostgreSQL engine to work with its tables.”
इंजन बंद है। उसी स्क्रीन पर Start पर टैप करें, या शुरुआती स्क्रीन के इंजन कार्ड पर।
वापस आने पर इंजन कार्ड Stopped दिखाता है
Android ने ऐप को background में रोक दिया। Start पर टैप करें; अगर PostgreSQL लिख रहा था तो वह खुद recover हो जाता है। Durability चालू होने पर, सबसे बुरी हालत में committed transactions के आख़िरी कुछ milliseconds गायब हो सकते हैं।
टर्मिनल में echo $DATABASE_URL कुछ नहीं दिखाता
पहले इंजन शुरू करें, फिर नया terminal session खोलें। इंजन शुरू होने से पहले खोला गया session variables नहीं देखता, और SSH sessions कभी नहीं।
“The local engine is stopped, so there is no connection to hand out. Start it and come back.”
Use in project के लिए इंजन चलता होना चाहिए। उसे शुरू करें, फिर sheet दोबारा खोलें।
“… cannot be tested from the app yet (no driver).”
Test Connection में Turso, Upstash, Atlas और Cloudflare D1 के लिए कोई test नहीं है। इसके बजाय account खोलें: अगर connection गलत है तो वह आपको वहीं दिख जाएगा।
“The SSH server key has changed. Connection stopped…”
Jump host का fingerprint पहली बार save किए गए fingerprint से अलग है। अगर आपने server दोबारा बनाया है तो यह अपेक्षित है; वरना बीच में कोई हो सकता है, इसलिए आगे न बढ़ें।
TLS पर PostgreSQL server के लिए Test Connection fail होता है
Verify server certificate को उन authorities से मिलाता है जिन पर आपका फ़ोन भरोसा करता है। अगर आपका server अपना certificate इस्तेमाल करता है, तो Choose CA certificate… से उसका CA चुनें। Encrypt only (no verification) के साथ connection encrypt होता है पर certificate जाँचा नहीं जाता, और स्क्रीन आपको चेतावनी देती है।
“Applied %1$d of %2$d: …”
कतार का एक edit fail हो गया। उससे पहले वाले लागू ही रहते हैं (कोई transaction नहीं)। Error पढ़ें, उसे ठीक करें और बाकी को फिर से लागू करें।
“The table already has N rows. A NOT NULL column needs a default value…”
जब तक आप NOT NULL column को Default नहीं देते, Add column disabled रहता है: मौजूदा rows को कुछ रखने के लिए चाहिए।
“No se pudieron aplicar los cambios: la tabla no tiene clave primaria utilizable…”
यह message हमेशा Spanish में होता है। इसका मतलब है कि table में काम लायक primary key नहीं है (या किसी row में वह NULL पर सेट है), इसलिए ऐप rows को सुरक्षित रूप से पहचान नहीं सकता और कुछ लागू नहीं करता।
“Read-only is on, so this write wasn't sent. Turn off Read-only above the editor to run it.”
आप Neon, Supabase, Turso या D1 database पर हैं। Editor के ऊपर Read-only बंद करें, फिर दोबारा चलाएँ; यह आपसे पुष्टि माँगेगा और destructive writes के लिए फ़िंगरप्रिंट भी।
जिस query पर मुझे भरोसा है उसके लिए Dangerous Operation दिखता है
Safe mode text जाँचता है, आपका इरादा नहीं। Dialog में SQL पढ़ें और Execute Anyway पर टैप करें।
“No AI provider is connected. Connect one in AI settings to have a model write the query.”
Proposal में Offline — generated by rules, not a model लिखा होता है। AI settings में एक provider connect करें (या SQL assistant के लिए कोई model चुनें) और Regenerate पर टैप करें।
“The model didn't return SQL”
Model ने ऐसा text लौटाया जो SQL नहीं है, इसलिए Accept नहीं है। उसका जवाब पढ़ें, कोई दूसरा model चुनें या अनुरोध बदलकर लिखें, और Regenerate पर टैप करें।
“Write a query first — the plan describes how it would run.”
Execution plan के लिए console editor में एक query होनी चाहिए। एक लिखें, फिर plan खोलें या Explain पर टैप करें।
“pg_stat_statements is not active, so there is nothing measured to show.”
इंजन के Settings में Statement statistics चालू करके save करें (यह इंजन को restart करता है), फिर Health में Activate पर टैप करें।
“<engine> runs on a server, so its backups belong to that provider.”
फ़ोन से सिर्फ़ local PostgreSQL का backup हो सकता है। Server या cloud database के लिए उसके provider के backups इस्तेमाल करें, या उसकी tables export करें।
“The “postgres” database is the engine's maintenance database and cannot be deleted.”
Delete database postgres या उस database पर कभी लागू नहीं होता जिससे आप जुड़े हैं। अगर आप कोई दूसरा database delete करना चाहते हैं, तो पहले किसी और database पर switch करें।
“Stopped waiting for the query. The server may still be running it.”
Neon, Supabase, Turso और D1 पर Stop server पर query cancel नहीं कर सकता; यह सिर्फ़ इंतज़ार रोकता है। अगर query भारी थी तो provider में जाँच लें।
Connection, tab, table या saved query जोड़ने पर Database Pro wall दिखता है
Free में 1 connection, 5 saved queries, 2 console tabs, 1 local database और प्रति connection 4 tables मिलती हैं। सबके लिए वही wall दिखता है; PlanetScale branch खोलना, और Sharing में Open… या Paste (देखें Database tools), उसी एक connection पर रुक जाते हैं। Pro limits हटा देता है।
अगले कदम