Skip to content

DB set to read-only when executing a query from SQL panel #33

@carlosgio

Description

@carlosgio

When I manually execute a long-ish (5-10 seconds) query from the SQL panel it is executed correctly but all the Python jobs that need to write on the DB start failing with attempt to write a readonly database.

When this happens, on /var/log/php/php_errors.log appears either the following:

PHP Notice: Undefined variable: error in /var/www/html/mydomain.io/public/php/phpliteadmin/phpliteadmin.php on line 1670

, or the following:

PHP Notice: Undefined variable: error in /var/www/html/mydomain.io/public/php/phpliteadmin/phpliteadmin.php on line 1587

If I check the permissions of the database, they have been changed from:

mydomain.sqlite3 -rwxrwxr-x myuser www-data

mydomain.sqlite3-shm -rwxrwxr-x www-data www-data

mydomain.sqlite3-wal -rwxrwxr-x www-data www-data

, to the following:

mydomain.sqlite3 -rwxrwxr-x myuser www-data

mydomain.sqlite3-shm -rwxrwxr-x carlos carlos

mydomain.sqlite3-wal -rwxrwxr-x carlos carlos

This problem persists until I execute a new query from the SQL panel. At that moment, the permissions revert back to normal (www-data www-data) and all the jobs start writing on the DB correctly again.

I don’t know what is causing this behavior but it’s 100% reproducible on my server.

If you need more information, please don’t hesitate to tell me.

P.S.: For reference, the query that always set the DB to read-only is:

WITH RECURSIVE dates(date) AS (
VALUES('2022-06-01')
UNION ALL
SELECT date(date, '+1 day')
FROM dates
WHERE date < date('now')
)
SELECT da.date,
COUNT(id) AS total,
IFNULL(ROUND(COUNT(deletion_date) * 100.0 / COUNT(id), 2), 100.0) AS processed_percent,
COUNT(id) - COUNT(deletion_date) AS non_processed,
IFNULL(ROUND(COUNT(posted_date) * 100.0 / COUNT(id), 2), 100.0) AS posted_percent,
COUNT(id) - COUNT(posted_date) AS non_posted
FROM dates da
LEFT JOIN tw2deso
ON da.date = date(tw2deso.creation_date)
GROUP BY da.date
ORDER BY da.date DESC;

tw2deso is a table that contains about 10000 elements.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions