SQLite Forum

Command Line Shell set parameter as date
Login
Note that in the CLI you will also have to turn off `defensive mode` if it is turned on before you can do this because `defensive mode` provides additional suspenders to prevent illicit modification of the database.

```
SQLite version 3.36.0 2021-04-03 23:27:49
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>   PRAGMA writable_schema = 1;
sqlite>   CREATE TABLE temp.sqlite_parameters(key TEXT PRIMARY KEY, value) WITHOUT ROWID;
Error: object name reserved for internal use: sqlite_parameters
sqlite> .dbconfig
          defensive on
            dqs_ddl off
            dqs_dml off
        enable_fkey on
        enable_qpsg off
     enable_trigger on
        enable_view on
     fts3_tokenizer off
 legacy_alter_table off
 legacy_file_format off
     load_extension on
   no_ckpt_on_close off
     reset_database off
        trigger_eqp off
     trusted_schema off
    writable_schema on
sqlite> .dbconfig defensive off
          defensive off
sqlite>   CREATE TABLE temp.sqlite_parameters(key TEXT PRIMARY KEY, value) WITHOUT ROWID;
sqlite> .dbconfig defensive on
          defensive on
sqlite>   PRAGMA writable_schema = 0;
sqlite>
```

Note that the `.param init` basically follows the above sequence internally.  It enables `writable_schema`, turns off `defensive mode`, creates the table, then restores `writable_schema` and `defensive mode` to the state they were in before executing the command.