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

时间:2010-05-07 23:28:05

标签: sqlite

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

这是在Mac OS 10.6.3下。

有人有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分: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的调用失败时,您才会看到该实用程序将打印“无法打开xxx”。可惜他们不会为你打印errno,但是这个信息应该真的可以帮助你缩小问题的范围,而不是特定于sqlite。

您要么指定错误的路径(尝试引用它),您没有权限,或者该文件确实不存在(意味着您使用cat的方式有所不同, .read,与当前目录不同)。

答案 1 :(得分:1)

小心;在末尾。 .read不喜欢;的。