【问题标题】:SQLite3 / PDO - No such table though it does existSQLite3 / PDO - 虽然它确实存在但没有这样的表
【发布时间】:2014-10-15 09:35:52
【问题描述】:

我有一个 SQLite3 数据库问题,我可以使用 sqlite3 命令或 PHPStorm 内置数据库管理器访问它,但我正在处理的应用程序找不到其中的表。它似乎正确连接到数据库。

这行 PHP 导致 PDOException:

$query = "SELECT * FROM users";
$results = self::$app->db->query($query);

例外只是SQLSTATE[HY000]: General error: 1 no such table: users。顺便说一句,我正在使用 Slim 框架。

我真的不知道该怎么做,因为我是 Slim 和 SQLite 的新手。

感谢您的帮助:-)

【问题讨论】:

  • 我没有你的问题的答案,但我建议你尝试用某种苗条的框架标签来标记它,因为你的代码 sn-p 的先决条件需要是已知(并且它们可能是苗条框架的一部分)-因此您可能想从实际使用该框架的人那里得到一些答案:)我最好的办法是您没有正确设置配置文件。
  • 谢谢,我做到了。我以为它只与 PDO 或 SQLite 有关,但我不确定,所以...

标签: php pdo sqlite


【解决方案1】:

您打开的数据库不包含此表。

SQLite 将愉快地打开任何文件名;如果不存在,它将创建一个新的空数据库。

检查您的数据库文件名。

【讨论】:

  • 我不知道数据库的自动创建,但我的是正确的并且存在。 app.db 文件位于包含我粘贴的两行脚本的父文件夹中。似乎可以正确打开它,因为我没有在任何地方创建其他 app.db 文件。
  • 证据表明您使用的数据库路径不正确。
  • 好吧,我只是尝试使用 .db 文件的绝对路径,它起作用了。我觉得没有先尝试过这个有点愚蠢......但我想知道,相对路径的参考应该是什么?相对于 PHP 脚本在我尝试时不起作用,但它肯定是一个路径问题,因为绝对路径解决了这个问题。无论如何,谢谢!
  • 相对路径基于当前目录,在PHP中是随机的。
【解决方案2】:

感谢接受的答案为我指明了正确的方向。 我正在使用 Symfony 4.1 并意识到 Symfony 的基本目录是 public 目录(在 2.8 中应该是 app)所以我必须打开我的数据库:

# file: PROJECT_ROOT/.env
DATABASE_URL="sqlite:///../my_super.db"

但是,命令中的每一个学说调用(如doctrine:schema:update)都必须在项目的直接子文件夹中调用,如下所示:

PROJECT_ROOT/bin$ ./console doctrine:schema:update --dump-sql

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多