Hello, when I use following sqlite3 commands, it returns error “cannot commit - no transaction is active” somewhere near the line “WHERE user IN (”… So I wanted to ask what to replace with what in order not to produce said error. I am not a developer and the ChatGPT (1, 2) is unable to provide working code. Can you please help?

said commands:

-- Start a transaction
BEGIN TRANSACTION;

-- Insert missing user_permission_overrides rows
INSERT INTO user_permission_overrides (room, user, write)
SELECT DISTINCT ru.room, u.id, TRUE
FROM room_users ru
JOIN users u ON ru.user = u.id
LEFT JOIN user_permission_overrides upo ON u.id = upo.user AND ru.room = upo.room
WHERE u.created < strftime('%s', '2024-07-02 00:49:26')
AND upo.user IS NULL;

-- Update existing user_permission_overrides rows
UPDATE user_permission_overrides
SET write = TRUE
WHERE user IN (
    SELECT id
    FROM users
    WHERE created < strftime('%s', '2024-07-02 00:49:26')
);

-- Commit the transaction
 COMMIT;

 END;

list of tables, schema, pragma I have pasted here please.

  • @hetzlemmingsworldOP
    link
    16 months ago

    I think that what helped was to remove “END;” line. It’s an alias for COMMIT.