【问题标题】:how we can save database created in sqlite3我们如何保存在 sqlite3 中创建的数据库
【发布时间】:2022-01-25 19:05:58
【问题描述】:

我是数据库新手。我正在尝试在其中创建一个数据库和表。 但退出sqlite后无法保存并再次打开。 我在centOS上使用sqlite3 3.6.20,当我将输入以下命令时

.save ex1.db or .open ex1.db

它将打印以下错误消息。

Error: unknown command or invalid arguments:  "save". Enter ".help" for help
Error: unknown command or invalid arguments:  "open". Enter ".help" for help

当打印 .help 它不会显示任何与保存和打开现有数据库相关的命令。 提前致谢。

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    我正在尝试在其中创建一个数据库和表。但退出sqlite后无法保存并再次打开。

    您无需保存。每个事务写入磁盘。 (或多或少。)

    要创建数据库“test.sl3”,您可以这样做。 (从命令行。程序的工作方式大致相同。)

    $ sqlite3 test.sl3
    SQLite version 3.8.7.2 2014-11-18 20:57:56
    Enter ".help" for usage hints.
    sqlite> create table test (test_id integer primary key);
    sqlite> insert into test values (1);
    sqlite> select * from test;
    1
    .quit
    

    没有.save。现在再次加载数据库。

    $ sqlite3 test.sl3
    SQLite version 3.8.7.2 2014-11-18 20:57:56
    Enter ".help" for usage hints.
    sqlite> select * from test;
    1
    

    数据还在。

    【讨论】:

      【解决方案2】:

      您应该提供一个文件名作为 .save 命令的参数,例如:

      sqlite> .save ex1.db
      

      文档:http://www.sqlite.org/cli.html

      【讨论】:

      • 是的,我给出了数据库的名称,即使它会打印错误消息。
      【解决方案3】:

      正如 Mike 在他的回答中指出的那样,您应该提供一个文件名来放入数据库。

      如果您做了很多工作并且没有预先提供文件名,并且您使用的版本中 .save 命令尚不可用(您引用 sqlite3 3.6.20 不知道它,我在sqlite3 version 3.8.2 中也看不到它)你可以使用.backup 命令

      sqlite> .help
      [...]
      .backup ?DB? FILE      Backup DB (default "main") to FILE
      
      $ sqlite3
      [...]
      sqlite> create table mytable ( column1 text, column2 integer );
      sqlite> insert into mytable values ( 'ENTRY1', 1 );  
      sqlite> insert into mytable values ( 'ENTRY2', 2 ); 
      sqlite> .backup main  temp.db
      sqlite> .quit
      
      $ sqlite3 temp.db
      [...]
      sqlite> .schema
      CREATE TABLE mytable ( column1 text, column2 integer );
      sqlite> select * from mytable;
      column1     column2   
      ----------  ----------
      ENTRY1      1         
      ENTRY2      2         
      

      【讨论】:

        【解决方案4】:

        使用Sqlite3 ex1.db 打开您的数据库。之后,所有查询都将在您的数据库中生效。

        【讨论】:

          【解决方案5】:

          也许尝试使用绝对路径而不是相对路径。

          我在 VS Code 中使用 alexcvzz 的 SQLite 扩展。

          当我使用相对路径时,出现错误。

          CREATE TABLE test (id INTEGER, name TEXT);
          INSERT INTO test (id, name) VALUES (1, "Hello");
          
          .save ex1.db
          

          当我使用绝对路径时,它可以工作。

          CREATE TABLE test (id INTEGER, name TEXT);
          INSERT INTO test (id, name) VALUES (1, "Hello");
          
          .save /Users/zacharyargentin/databases/ex1.db
          

          注意:在 VS Code 扩展中,您必须在运行查询之前选择一个数据库,所以我选择了 :memory: 数据库,这是默认的内存数据库。一旦你关闭连接,这个数据库就会自动删除(所以如果你想保留它,你必须像我在上面的例子中那样保存它)。

          【讨论】:

            猜你喜欢
            • 2010-09-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-05
            • 2020-12-07
            • 2013-07-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多