Change SQLite database mode to read-write

前端 未结 14 568
盖世英雄少女心
盖世英雄少女心 2020-12-13 01:35

How can I change an SQLite database from read-only to read-write?

When I executed the update statement, I always got:

SQL error: attempt to wr

相关标签:
14条回答
  • 2020-12-13 02:17

    From the command line, enter the folder where your database file is located and execute the following command:

    chmod 777 databasefilename
    

    This will grant all permissions to all users.

    0 讨论(0)
  • 2020-12-13 02:18

    Edit the DB: I was having problems editing the db. I ended up having to
    sudo chown 'non root username' ts3server.sqlitedb
    as long as it wasn't root, i could edit the file. Username is the username of my non root account.

    Auto start TeamSpeak: as your non root account
    crontab -e
    @reboot /path to ts3server/ aka /home/ts3server/ts3server_startscript.sh start

    0 讨论(0)
  • 2020-12-13 02:19

    In Linux command shell, I did:

    chmod 777 <db_folder>
    

    Where contains the database file.

    It works. Now I can access my database and make insert queries.

    0 讨论(0)
  • 2020-12-13 02:19

    On Windows:

    tl;dr: Try opening the file again.

    Our system was suffering this problem, and it definitely wasn't a permissions issue, since the program itself would be able to open the database as writable from many threads most of the time, but occasionally (only on Windows, not on OSX), a thread would get these errors even though all the other threads in the program were having no difficulties.

    We eventually discovered that the threads that were failing were only those that were trying to open the database immediately after another thread had closed it (within 3 ms). We speculated that the problem was due to the fact that Windows (or the sqlite implementation under windows) doesn't always immediately clean up up file resources upon closing of a file. We got around this by running a test write query against the db upon opening (e.g., creating then dropping a table with a silly name). If the create/drop failed, we waited for 50 ms and tried again, repeating until we succeeded or 5 seconds elapsed.

    It worked; apparently there just needed to be enough time for the resources to flush out to disk.

    0 讨论(0)
  • 2020-12-13 02:21

    I solved this by changing owner from root to me on all files on /db dir.

    Just do ls -l on that folder, if any of the filer is owned by root just change it to you, using: sudo chown user file

    0 讨论(0)
  • 2020-12-13 02:24

    On Ubuntu, change the owner to the Apache group and grant the right permissions (no, it's not 777):

    sudo chgrp www-data <path to db.sqlite3>
    sudo chmod 664 <path to db.sqlite3>
    

    Update

    You can set the permissions for group and user as well.

    sudo chown www-data:www-data <path to db.sqlite3>
    
    0 讨论(0)
提交回复
热议问题