"UPDATE table_name SET w = $1, x = $2, z = $4 WHERE y = $3 RETURNING *",

does not do the same as

"UPDATE table_name SET w = $1, x = $2, y = $3, z = $4 RETURNING *",

It’s 2 am and my mind blanked out the WHERE, and just wanted the numbers neatly in order of 1234.

idiot.

FML.

You are viewing a single thread.
View all comments
110 points
*

This is a hard lesson to learn. From now on, my guess is you will have dozens of backups.

permalink
report
reply
66 points

And a development environment. And not touch production without running the exact code at least once and being well slept.

permalink
report
parent
reply
9 points

Fuck that, get shit housed and still do it right. That’s a pro.

permalink
report
parent
reply
19 points

That’s not pro, that’s just reckless gambling.

permalink
report
parent
reply
0 points
*

Replied hastily, but the way to run db statements in prod while dealing with sleep deprivation and drinking too much is to run it a bunch in several test env scenarios so you’re just copy pasting to prod and it CAN confidently be done. Also enable transactions and determine several, valid smoke tests.

Edit: a -> several

permalink
report
parent
reply
28 points

And always use a transaction so you’re required to commit to make it permanent. See an unexpected result? Rollback.

permalink
report
parent
reply
11 points

Transactions aren’t backups. You can just as easily commit before fully realizing it. Backups, backups, backups.

permalink
report
parent
reply
20 points

Yes, but

  1. Begin transaction
  2. Update table set x=‘oopsie’
  3. Sees 42096 rows affected
  4. Rollback

Can prevent a restore, whereas doing the update with auto commit guarantees a restore on (mostly) every error you make

permalink
report
parent
reply
3 points

Backups are for emergencies.

Transactions are for oopsies.

permalink
report
parent
reply
14 points

I’ve read something like “there are two kinds of people: those who backup and those who are about to”

permalink
report
parent
reply
2 points

This is the way

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.1K

    Monthly active users

  • 1.8K

    Posts

  • 30K

    Comments