为什么 SQLite 说它无法从文件中读取 SQL?

问题描述 投票:0回答:3

我在一个文件中有一堆 SQL,它创建表等等。问题是,当我尝试执行 .read 命令时,它只是返回“无法打开 xxx”。我已将权限设置为每个人读/写,但这没有帮助。我可以从命令行 cat 该文件并看到它很好。

这是在 Mac OS 10.6.3 下。

这里有人有什么想法吗?谢谢!

sqlite
3个回答
3
投票

这是 shell.c 中的源代码,其中 sqlite3 实用程序执行

.read
并尝试读取 .sql 文件:

  if( c=='r' && strncmp(azArg[0], "read", n)==0 && nArg==2 ){
    FILE *alt = fopen(azArg[1], "rb");
    if( alt==0 ){
      fprintf(stderr,"can't open \"%s\"\n", azArg[1]);
    }else{
      process_input(p, alt);
      fclose(alt);
    }
  }else

您可以看到,仅当调用 fopen 失败时,该实用程序才会打印“can't open xxx”。遗憾的是他们没有为你打印 errno,但是这个信息应该真正帮助你缩小问题范围,因为它不是特定于 sqlite 的。

您指定的路径错误(尝试引用它),您没有权限,或者文件确实不存在(这意味着您使用

cat
.read
的方式有所不同,就像当前目录不同)。


2
投票

留意 ;在最后。 .read 不喜欢 ;'s.


0
投票

我遇到了同样的问题,摆脱了 ;最后它成功了。哈哈 smh 菜鸟错误。

© www.soinside.com 2019 - 2024. All rights reserved.