我必须简单地更改数据库的名称,但似乎该ALTER DATABASE
命令在 SQLite 中无效。
我的场景是我有一个 SQLite 加密数据库,现在我想重命名它。手动重命名 db 文件后,加密不起作用。所以我尝试使用命令更改数据库的名称。看起来问题是由于加密造成的。
我必须简单地更改数据库的名称,但似乎该ALTER DATABASE
命令在 SQLite 中无效。
我的场景是我有一个 SQLite 加密数据库,现在我想重命名它。手动重命名 db 文件后,加密不起作用。所以我尝试使用命令更改数据库的名称。看起来问题是由于加密造成的。
每个 sqlite 文件包含一个且只有一个数据库。这个数据库没有名字。据我所知,第一个打开的数据库有一个“虚拟”名称main
,当你想引用它时,说当你附加补充数据库时。您可以选择附加的数据库的“虚拟”名称。
[someone@somewhere tmp]$ sqlite3 bla.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /tmp/bla.db
sqlite> attach database 'example.db' as another_db;
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /tmp/bla.db
2 another_db /tmp/example.db
否则 Laurent 是正确的,如果这是您在此处尝试执行的操作,您可以重命名数据库文件。
SQLite 中没有数据库名称,因为每个文件只有一个数据库。也许您想要做的是重命名 SQLite 文件。
在最新版本的 Sqlite3 中有.backup命令。
如果数据库不大,这可能是一个解决方案:
S:\>sqlite3 encrypted.db
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .backup new.db
sqlite> .q
然后
S:\>sqlite3 new.db
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>