It turns out that the transaction middleware doesn't play nice with SQLite, so I've commented it. When devs decide to ditch SQLite for Postgres later in the development process, they can put it back in.