[{"data":1,"prerenderedAt":917},["ShallowReactive",2],{"content-query-3XxO41nFgR":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"layout":10,"crumb":11,"summary":12,"group":13,"order":14,"port":15,"updated":16,"cta":17,"related":25,"faq":44,"body":60,"_type":910,"_id":911,"_source":912,"_file":913,"_stem":914,"_extension":915,"sitemap":916},"/localhost/5432","localhost",false,"","localhost:5432: the PostgreSQL default port and connection fixes","5432 is the PostgreSQL default port. Fix 'connection refused on localhost:5432', free a busy port, change it, and connect remotely without exposing Postgres.","reference","localhost:5432","PostgreSQL (psql, Postgres.app, Docker postgres).","Data, AI and automation",13,5432,"2026-10-28",{"eyebrow":18,"title":19,"text":20,"to":21,"label":22,"secondaryTo":23,"secondaryLabel":24},"Webhook Relay","Get webhook data into Postgres without exposing anything","Keep PostgreSQL private. Forward provider webhooks to an app on localhost with relay forward, and let that app write to Postgres. The database never gets a public address, and every webhook is logged and replayable if an insert fails.","/docs/webhooks/internal/localhost/","Receive webhooks locally","/blog/webhook-retries-and-idempotency/","Retries and idempotency",[26,29,32,35,38,41],{"title":27,"to":28},"localhost:8000","/localhost/8000/",{"title":30,"to":31},"localhost:9000","/localhost/9000/",{"title":33,"to":34},"localhost:8888 (Jupyter)","/localhost/8888/",{"title":36,"to":37},"127.0.0.1 and the loopback address","/localhost/127-0-0-1/",{"title":39,"to":40},"What is idempotency?","/glossary/idempotency/",{"title":42,"to":43},"What is a tunnel?","/glossary/tunnel/",[45,48,51,54,57],{"q":46,"a":47},"What is the default PostgreSQL port?","PostgreSQL listens on TCP port 5432 by default. A local server is reached at localhost:5432, for example with psql -h localhost -p 5432 -U postgres.",{"q":49,"a":50},"Why do I get connection refused on localhost port 5432?","No PostgreSQL server is accepting TCP connections on port 5432. Either the server is not running, it is listening on a different port, or listen_addresses does not include localhost. Check with pg_isready -h localhost -p 5432 and look at the server log.",{"q":52,"a":53},"Can I open localhost:5432 in a browser?","No. 5432 speaks the PostgreSQL wire protocol, not HTTP. Use a database client such as psql, pgAdmin, DBeaver or TablePlus, or your application's database driver.",{"q":55,"a":56},"How do I run two PostgreSQL servers at once?","Give the second one another port. Set port = 5433 in postgresql.conf, or with Docker publish the container's 5432 on a different host port with -p 5433:5432, then connect with -p 5433.",{"q":58,"a":59},"How do I connect to PostgreSQL on a remote server securely?","Use an SSH tunnel. Run ssh -L 5433:localhost:5432 user@server and connect your client to localhost:5433. Postgres stays bound to localhost on the server and is never exposed to the internet.",{"type":61,"children":62,"toc":903},"root",[63,101,108,219,224,300,306,509,515,526,606,631,682,688,722,734,797,803,815,827,862,897],{"type":64,"tag":65,"props":66,"children":67},"element","p",{},[68,83,85,91,93,99],{"type":64,"tag":69,"props":70,"children":71},"strong",{},[72,75,81],{"type":73,"value":74},"text","5432 is the default port of PostgreSQL, so ",{"type":64,"tag":76,"props":77,"children":79},"code",{"className":78},[],[80],{"type":73,"value":11},{"type":73,"value":82}," is a Postgres server running on your own machine.",{"type":73,"value":84}," It speaks the PostgreSQL wire protocol, not HTTP, so you connect with ",{"type":64,"tag":76,"props":86,"children":88},{"className":87},[],[89],{"type":73,"value":90},"psql",{"type":73,"value":92},", pgAdmin, DBeaver or your app's driver rather than a browser. The classic error is ",{"type":64,"tag":76,"props":94,"children":96},{"className":95},[],[97],{"type":73,"value":98},"connection refused ... Is the server running on host \"localhost\" and accepting TCP/IP connections on port 5432?",{"type":73,"value":100},", which means exactly that: nothing is accepting connections there.",{"type":64,"tag":102,"props":103,"children":105},"h2",{"id":104},"what-runs-on-port-5432",[106],{"type":73,"value":107},"What runs on port 5432",{"type":64,"tag":109,"props":110,"children":111},"table",{},[112,131],{"type":64,"tag":113,"props":114,"children":115},"thead",{},[116],{"type":64,"tag":117,"props":118,"children":119},"tr",{},[120,126],{"type":64,"tag":121,"props":122,"children":123},"th",{},[124],{"type":73,"value":125},"Install",{"type":64,"tag":121,"props":127,"children":128},{},[129],{"type":73,"value":130},"Typical start command",{"type":64,"tag":132,"props":133,"children":134},"tbody",{},[135,153,166,183,200],{"type":64,"tag":117,"props":136,"children":137},{},[138,144],{"type":64,"tag":139,"props":140,"children":141},"td",{},[142],{"type":73,"value":143},"Homebrew (macOS)",{"type":64,"tag":139,"props":145,"children":146},{},[147],{"type":64,"tag":76,"props":148,"children":150},{"className":149},[],[151],{"type":73,"value":152},"brew services start postgresql@16",{"type":64,"tag":117,"props":154,"children":155},{},[156,161],{"type":64,"tag":139,"props":157,"children":158},{},[159],{"type":73,"value":160},"Postgres.app (macOS)",{"type":64,"tag":139,"props":162,"children":163},{},[164],{"type":73,"value":165},"Start from the menu bar",{"type":64,"tag":117,"props":167,"children":168},{},[169,174],{"type":64,"tag":139,"props":170,"children":171},{},[172],{"type":73,"value":173},"Linux packages",{"type":64,"tag":139,"props":175,"children":176},{},[177],{"type":64,"tag":76,"props":178,"children":180},{"className":179},[],[181],{"type":73,"value":182},"sudo systemctl start postgresql",{"type":64,"tag":117,"props":184,"children":185},{},[186,191],{"type":64,"tag":139,"props":187,"children":188},{},[189],{"type":73,"value":190},"Docker",{"type":64,"tag":139,"props":192,"children":193},{},[194],{"type":64,"tag":76,"props":195,"children":197},{"className":196},[],[198],{"type":73,"value":199},"docker run -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres",{"type":64,"tag":117,"props":201,"children":202},{},[203,208],{"type":64,"tag":139,"props":204,"children":205},{},[206],{"type":73,"value":207},"Windows installer",{"type":64,"tag":139,"props":209,"children":210},{},[211,217],{"type":64,"tag":76,"props":212,"children":214},{"className":213},[],[215],{"type":73,"value":216},"postgresql-x64-\u003Cversion>",{"type":73,"value":218}," service",{"type":64,"tag":65,"props":220,"children":221},{},[222],{"type":73,"value":223},"Tools that speak the Postgres protocol, such as CockroachDB (26257) or a local Supabase stack (54322 by default), deliberately use other ports.",{"type":64,"tag":225,"props":226,"children":230},"pre",{"className":227,"code":228,"language":229,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","psql -h localhost -p 5432 -U postgres\n# or a connection string\npsql \"postgresql://postgres:secret@localhost:5432/postgres\"\n","bash",[231],{"type":64,"tag":76,"props":232,"children":233},{"__ignoreMap":7},[234,277,287],{"type":64,"tag":235,"props":236,"children":239},"span",{"class":237,"line":238},"line",1,[240,245,251,257,262,267,272],{"type":64,"tag":235,"props":241,"children":243},{"style":242},"--shiki-default:#B392F0",[244],{"type":73,"value":90},{"type":64,"tag":235,"props":246,"children":248},{"style":247},"--shiki-default:#79B8FF",[249],{"type":73,"value":250}," -h",{"type":64,"tag":235,"props":252,"children":254},{"style":253},"--shiki-default:#9ECBFF",[255],{"type":73,"value":256}," localhost",{"type":64,"tag":235,"props":258,"children":259},{"style":247},[260],{"type":73,"value":261}," -p",{"type":64,"tag":235,"props":263,"children":264},{"style":247},[265],{"type":73,"value":266}," 5432",{"type":64,"tag":235,"props":268,"children":269},{"style":247},[270],{"type":73,"value":271}," -U",{"type":64,"tag":235,"props":273,"children":274},{"style":253},[275],{"type":73,"value":276}," postgres\n",{"type":64,"tag":235,"props":278,"children":280},{"class":237,"line":279},2,[281],{"type":64,"tag":235,"props":282,"children":284},{"style":283},"--shiki-default:#6A737D",[285],{"type":73,"value":286},"# or a connection string\n",{"type":64,"tag":235,"props":288,"children":290},{"class":237,"line":289},3,[291,295],{"type":64,"tag":235,"props":292,"children":293},{"style":242},[294],{"type":73,"value":90},{"type":64,"tag":235,"props":296,"children":297},{"style":253},[298],{"type":73,"value":299}," \"postgresql://postgres:secret@localhost:5432/postgres\"\n",{"type":64,"tag":102,"props":301,"children":303},{"id":302},"fix-connection-refused-on-localhost5432",[304],{"type":73,"value":305},"Fix \"connection refused\" on localhost:5432",{"type":64,"tag":307,"props":308,"children":309},"ol",{},[310,363,419,444,477],{"type":64,"tag":311,"props":312,"children":313},"li",{},[314,319,351,355,361],{"type":64,"tag":69,"props":315,"children":316},{},[317],{"type":73,"value":318},"Is it running?",{"type":64,"tag":225,"props":320,"children":322},{"className":227,"code":321,"language":229,"meta":7,"style":7},"pg_isready -h localhost -p 5432\n",[323],{"type":64,"tag":76,"props":324,"children":325},{"__ignoreMap":7},[326],{"type":64,"tag":235,"props":327,"children":328},{"class":237,"line":238},[329,334,338,342,346],{"type":64,"tag":235,"props":330,"children":331},{"style":242},[332],{"type":73,"value":333},"pg_isready",{"type":64,"tag":235,"props":335,"children":336},{"style":247},[337],{"type":73,"value":250},{"type":64,"tag":235,"props":339,"children":340},{"style":253},[341],{"type":73,"value":256},{"type":64,"tag":235,"props":343,"children":344},{"style":247},[345],{"type":73,"value":261},{"type":64,"tag":235,"props":347,"children":348},{"style":247},[349],{"type":73,"value":350}," 5432\n",{"type":64,"tag":352,"props":353,"children":354},"br",{},[],{"type":64,"tag":76,"props":356,"children":358},{"className":357},[],[359],{"type":73,"value":360},"no response",{"type":73,"value":362}," means the server is down. Start it with the command for your install and read its log if it exits straight away.",{"type":64,"tag":311,"props":364,"children":365},{},[366,371,373,378,380,386,388,394,396,402,404,410,412,417],{"type":64,"tag":69,"props":367,"children":368},{},[369],{"type":73,"value":370},"Socket vs TCP.",{"type":73,"value":372}," ",{"type":64,"tag":76,"props":374,"children":376},{"className":375},[],[377],{"type":73,"value":90},{"type":73,"value":379}," without ",{"type":64,"tag":76,"props":381,"children":383},{"className":382},[],[384],{"type":73,"value":385},"-h",{"type":73,"value":387}," uses a Unix socket. If that works but ",{"type":64,"tag":76,"props":389,"children":391},{"className":390},[],[392],{"type":73,"value":393},"-h localhost",{"type":73,"value":395}," fails, the server isn't listening on TCP: check ",{"type":64,"tag":76,"props":397,"children":399},{"className":398},[],[400],{"type":73,"value":401},"listen_addresses",{"type":73,"value":403}," in ",{"type":64,"tag":76,"props":405,"children":407},{"className":406},[],[408],{"type":73,"value":409},"postgresql.conf",{"type":73,"value":411}," (it should include ",{"type":64,"tag":76,"props":413,"children":415},{"className":414},[],[416],{"type":73,"value":5},{"type":73,"value":418},").",{"type":64,"tag":311,"props":420,"children":421},{},[422,427,428,434,436,442],{"type":64,"tag":69,"props":423,"children":424},{},[425],{"type":73,"value":426},"Wrong port.",{"type":73,"value":372},{"type":64,"tag":76,"props":429,"children":431},{"className":430},[],[432],{"type":73,"value":433},"SHOW port;",{"type":73,"value":435}," from a working session, or ",{"type":64,"tag":76,"props":437,"children":439},{"className":438},[],[440],{"type":73,"value":441},"sudo lsof -i -P | grep postgres",{"type":73,"value":443},". Multiple Homebrew versions can each claim a port.",{"type":64,"tag":311,"props":445,"children":446},{},[447,452,454,460,462,468,470,475],{"type":64,"tag":69,"props":448,"children":449},{},[450],{"type":73,"value":451},"Docker.",{"type":73,"value":453}," The container needs ",{"type":64,"tag":76,"props":455,"children":457},{"className":456},[],[458],{"type":73,"value":459},"-p 5432:5432",{"type":73,"value":461},". From another container in the same Compose project, use the service name (",{"type":64,"tag":76,"props":463,"children":465},{"className":464},[],[466],{"type":73,"value":467},"db:5432",{"type":73,"value":469},"), not ",{"type":64,"tag":76,"props":471,"children":473},{"className":472},[],[474],{"type":73,"value":5},{"type":73,"value":476},".",{"type":64,"tag":311,"props":478,"children":479},{},[480,485,486,492,494,500,502,508],{"type":64,"tag":69,"props":481,"children":482},{},[483],{"type":73,"value":484},"Authentication errors are progress.",{"type":73,"value":372},{"type":64,"tag":76,"props":487,"children":489},{"className":488},[],[490],{"type":73,"value":491},"password authentication failed",{"type":73,"value":493}," or ",{"type":64,"tag":76,"props":495,"children":497},{"className":496},[],[498],{"type":73,"value":499},"no pg_hba.conf entry",{"type":73,"value":501}," means you reached the server. Fix the credentials or the matching line in ",{"type":64,"tag":76,"props":503,"children":505},{"className":504},[],[506],{"type":73,"value":507},"pg_hba.conf",{"type":73,"value":476},{"type":64,"tag":102,"props":510,"children":512},{"id":511},"find-and-free-a-busy-port-5432",[513],{"type":73,"value":514},"Find and free a busy port 5432",{"type":64,"tag":65,"props":516,"children":517},{},[518,524],{"type":64,"tag":76,"props":519,"children":521},{"className":520},[],[522],{"type":73,"value":523},"could not bind IPv4 address \"127.0.0.1\": Address already in use",{"type":73,"value":525}," usually means a second Postgres: Postgres.app and Homebrew both running, or a Docker container holding the host port.",{"type":64,"tag":225,"props":527,"children":529},{"className":227,"code":528,"language":229,"meta":7,"style":7},"# macOS / Linux\nsudo lsof -i :5432\ndocker ps --filter \"publish=5432\"\nbrew services list\n",[530],{"type":64,"tag":76,"props":531,"children":532},{"__ignoreMap":7},[533,541,564,587],{"type":64,"tag":235,"props":534,"children":535},{"class":237,"line":238},[536],{"type":64,"tag":235,"props":537,"children":538},{"style":283},[539],{"type":73,"value":540},"# macOS / Linux\n",{"type":64,"tag":235,"props":542,"children":543},{"class":237,"line":279},[544,549,554,559],{"type":64,"tag":235,"props":545,"children":546},{"style":242},[547],{"type":73,"value":548},"sudo",{"type":64,"tag":235,"props":550,"children":551},{"style":253},[552],{"type":73,"value":553}," lsof",{"type":64,"tag":235,"props":555,"children":556},{"style":247},[557],{"type":73,"value":558}," -i",{"type":64,"tag":235,"props":560,"children":561},{"style":253},[562],{"type":73,"value":563}," :5432\n",{"type":64,"tag":235,"props":565,"children":566},{"class":237,"line":289},[567,572,577,582],{"type":64,"tag":235,"props":568,"children":569},{"style":242},[570],{"type":73,"value":571},"docker",{"type":64,"tag":235,"props":573,"children":574},{"style":253},[575],{"type":73,"value":576}," ps",{"type":64,"tag":235,"props":578,"children":579},{"style":247},[580],{"type":73,"value":581}," --filter",{"type":64,"tag":235,"props":583,"children":584},{"style":253},[585],{"type":73,"value":586}," \"publish=5432\"\n",{"type":64,"tag":235,"props":588,"children":590},{"class":237,"line":589},4,[591,596,601],{"type":64,"tag":235,"props":592,"children":593},{"style":242},[594],{"type":73,"value":595},"brew",{"type":64,"tag":235,"props":597,"children":598},{"style":253},[599],{"type":73,"value":600}," services",{"type":64,"tag":235,"props":602,"children":603},{"style":253},[604],{"type":73,"value":605}," list\n",{"type":64,"tag":225,"props":607,"children":611},{"className":608,"code":609,"language":610,"meta":7,"style":7},"language-powershell shiki shiki-themes github-dark","# Windows\nnetstat -ano | findstr :5432\n","powershell",[612],{"type":64,"tag":76,"props":613,"children":614},{"__ignoreMap":7},[615,623],{"type":64,"tag":235,"props":616,"children":617},{"class":237,"line":238},[618],{"type":64,"tag":235,"props":619,"children":620},{},[621],{"type":73,"value":622},"# Windows\n",{"type":64,"tag":235,"props":624,"children":625},{"class":237,"line":279},[626],{"type":64,"tag":235,"props":627,"children":628},{},[629],{"type":73,"value":630},"netstat -ano | findstr :5432\n",{"type":64,"tag":65,"props":632,"children":633},{},[634,636,642,644,650,652,658,660,666,667,672,674,680],{"type":73,"value":635},"Stop the duplicate cleanly (",{"type":64,"tag":76,"props":637,"children":639},{"className":638},[],[640],{"type":73,"value":641},"brew services stop postgresql@16",{"type":73,"value":643},", quit Postgres.app, ",{"type":64,"tag":76,"props":645,"children":647},{"className":646},[],[648],{"type":73,"value":649},"docker stop \u003Ccontainer>",{"type":73,"value":651},", or stop the Windows service) rather than ",{"type":64,"tag":76,"props":653,"children":655},{"className":654},[],[656],{"type":73,"value":657},"kill -9",{"type":73,"value":659},", which skips a clean shutdown. To run both, move one: ",{"type":64,"tag":76,"props":661,"children":663},{"className":662},[],[664],{"type":73,"value":665},"port = 5433",{"type":73,"value":403},{"type":64,"tag":76,"props":668,"children":670},{"className":669},[],[671],{"type":73,"value":409},{"type":73,"value":673},", or ",{"type":64,"tag":76,"props":675,"children":677},{"className":676},[],[678],{"type":73,"value":679},"-p 5433:5432",{"type":73,"value":681}," in Docker.",{"type":64,"tag":102,"props":683,"children":685},{"id":684},"connect-from-another-machine-safely",[686],{"type":73,"value":687},"Connect from another machine (safely)",{"type":64,"tag":65,"props":689,"children":690},{},[691,693,699,700,705,707,712,714,720],{"type":73,"value":692},"To accept LAN connections, set ",{"type":64,"tag":76,"props":694,"children":696},{"className":695},[],[697],{"type":73,"value":698},"listen_addresses = '*'",{"type":73,"value":403},{"type":64,"tag":76,"props":701,"children":703},{"className":702},[],[704],{"type":73,"value":409},{"type":73,"value":706},", add a ",{"type":64,"tag":76,"props":708,"children":710},{"className":709},[],[711],{"type":73,"value":507},{"type":73,"value":713}," line limited to your subnet (for example ",{"type":64,"tag":76,"props":715,"children":717},{"className":716},[],[718],{"type":73,"value":719},"host all all 192.168.1.0/24 scram-sha-256",{"type":73,"value":721},"), restart, and allow 5432 through the firewall only for that subnet.",{"type":64,"tag":65,"props":723,"children":724},{},[725,727,732],{"type":73,"value":726},"For anything beyond a trusted LAN, ",{"type":64,"tag":69,"props":728,"children":729},{},[730],{"type":73,"value":731},"use an SSH tunnel",{"type":73,"value":733}," and leave Postgres bound to localhost:",{"type":64,"tag":225,"props":735,"children":737},{"className":227,"code":736,"language":229,"meta":7,"style":7},"ssh -L 5433:localhost:5432 user@db-server\npsql -h localhost -p 5433 -U app\n",[738],{"type":64,"tag":76,"props":739,"children":740},{"__ignoreMap":7},[741,764],{"type":64,"tag":235,"props":742,"children":743},{"class":237,"line":238},[744,749,754,759],{"type":64,"tag":235,"props":745,"children":746},{"style":242},[747],{"type":73,"value":748},"ssh",{"type":64,"tag":235,"props":750,"children":751},{"style":247},[752],{"type":73,"value":753}," -L",{"type":64,"tag":235,"props":755,"children":756},{"style":253},[757],{"type":73,"value":758}," 5433:localhost:5432",{"type":64,"tag":235,"props":760,"children":761},{"style":253},[762],{"type":73,"value":763}," user@db-server\n",{"type":64,"tag":235,"props":765,"children":766},{"class":237,"line":279},[767,771,775,779,783,788,792],{"type":64,"tag":235,"props":768,"children":769},{"style":242},[770],{"type":73,"value":90},{"type":64,"tag":235,"props":772,"children":773},{"style":247},[774],{"type":73,"value":250},{"type":64,"tag":235,"props":776,"children":777},{"style":253},[778],{"type":73,"value":256},{"type":64,"tag":235,"props":780,"children":781},{"style":247},[782],{"type":73,"value":261},{"type":64,"tag":235,"props":784,"children":785},{"style":247},[786],{"type":73,"value":787}," 5433",{"type":64,"tag":235,"props":789,"children":790},{"style":247},[791],{"type":73,"value":271},{"type":64,"tag":235,"props":793,"children":794},{"style":253},[795],{"type":73,"value":796}," app\n",{"type":64,"tag":102,"props":798,"children":800},{"id":799},"dont-put-postgres-on-the-public-internet",[801],{"type":73,"value":802},"Don't put Postgres on the public internet",{"type":64,"tag":65,"props":804,"children":805},{},[806,808,813],{"type":73,"value":807},"Internet-wide scanners probe 5432 constantly, and a weak password or a permissive ",{"type":64,"tag":76,"props":809,"children":811},{"className":810},[],[812],{"type":73,"value":507},{"type":73,"value":814}," is enough to lose the database. An HTTP tunnel won't carry the Postgres protocol anyway, and opening a raw TCP path is rarely the right answer. Use SSH, a VPN, or your cloud provider's private networking.",{"type":64,"tag":65,"props":816,"children":817},{},[818,820,825],{"type":73,"value":819},"If the reason you wanted Postgres reachable is to ",{"type":64,"tag":69,"props":821,"children":822},{},[823],{"type":73,"value":824},"get webhook data into it",{"type":73,"value":826},", expose the app instead of the database. Forward webhooks to a handler on localhost:",{"type":64,"tag":225,"props":828,"children":830},{"className":227,"code":829,"language":229,"meta":7,"style":7},"relay forward --bucket orders http://localhost:8000/webhooks\n",[831],{"type":64,"tag":76,"props":832,"children":833},{"__ignoreMap":7},[834],{"type":64,"tag":235,"props":835,"children":836},{"class":237,"line":238},[837,842,847,852,857],{"type":64,"tag":235,"props":838,"children":839},{"style":242},[840],{"type":73,"value":841},"relay",{"type":64,"tag":235,"props":843,"children":844},{"style":253},[845],{"type":73,"value":846}," forward",{"type":64,"tag":235,"props":848,"children":849},{"style":247},[850],{"type":73,"value":851}," --bucket",{"type":64,"tag":235,"props":853,"children":854},{"style":253},[855],{"type":73,"value":856}," orders",{"type":64,"tag":235,"props":858,"children":859},{"style":253},[860],{"type":73,"value":861}," http://localhost:8000/webhooks\n",{"type":64,"tag":65,"props":863,"children":864},{},[865,867,874,876,881,883,888,890,896],{"type":73,"value":866},"The handler validates the ",{"type":64,"tag":868,"props":869,"children":871},"a",{"href":870},"/glossary/webhook-signature/",[872],{"type":73,"value":873},"signature",{"type":73,"value":875}," and writes to ",{"type":64,"tag":76,"props":877,"children":879},{"className":878},[],[880],{"type":73,"value":11},{"type":73,"value":882},". Because providers retry, make inserts ",{"type":64,"tag":868,"props":884,"children":885},{"href":40},[886],{"type":73,"value":887},"idempotent",{"type":73,"value":889},", for example with a unique constraint on the event ID and ",{"type":64,"tag":76,"props":891,"children":893},{"className":892},[],[894],{"type":73,"value":895},"INSERT ... ON CONFLICT DO NOTHING",{"type":73,"value":476},{"type":64,"tag":898,"props":899,"children":900},"style",{},[901],{"type":73,"value":902},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":289,"depth":289,"links":904},[905,906,907,908,909],{"id":104,"depth":279,"text":107},{"id":302,"depth":279,"text":305},{"id":511,"depth":279,"text":514},{"id":684,"depth":279,"text":687},{"id":799,"depth":279,"text":802},"markdown","content:localhost:5432.md","content","localhost/5432.md","localhost/5432","md",{"loc":4},1793199810495]