【问题标题】:Heroku app with Django SQL Explorer not doing queries on Postgres DB带有 Django SQL Explorer 的 Heroku 应用程序不在 Postgres DB 上进行查询
【发布时间】:2018-10-05 14:04:06
【问题描述】:

我在 Heroku 上部署了一个 Django 站点。我已经在网站上安装了django-sql-explorer。在本地一切都很好,但在 Heroku 上,因为数据库是 Postgres,运行此查询时:

SELECT * FROM parcare_parking WHERE parking_on = date('now','+1 day');

我收到此错误:

function date(unknown, unknown) does not exist LINE 3: WHERE parking_on = date('now','+1 day'); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.*

`SELECT * FROM parcare_parking WHERE parking_on = "2018-10-08"` fired

    column "2018-10-08" does not exist LINE 1: SELECT * FROM parcare_parking WHERE parking_on = "2018-10-08... ^

但是SELECT * FROM parcare_parking 找到正确的结果。 它们在我的本地开发人员上,但不知何故,从我本地的 SQLite3 到 Heroku 的 Postgres 是不兼容的。我该怎么办?

【问题讨论】:

    标签: django postgresql heroku


    【解决方案1】:

    不知何故,从我本地的 SQLite3 到 Heroku 的 Postgres 是不兼容的。我该怎么办?

    您应该在所有环境中使用相同的数据库。由于 Heroku 不支持 SQLite,这意味着像 PostgreSQL 这样的客户端-服务器数据库。

    Django 的 ORM 有助于消除数据库技术之间的差异,但它不能解决所有问题。在不同的环境中使用不同的数据库会显着增加出现此类特定环境错误的机会。

    【讨论】:

    • 如果反对者能解释这是多么糟糕的建议,我会很高兴。程序运行的每个环境都应该尽可能相似,以减少意外问题。你不会在开发中运行 Django 1.10,在生产中运行 Django 1.11,对吗?还是在 Python 3 中开发并使用 Python 2 进行部署?在这些环境中使用相同的数据库系统非常重要。即使是由模型更改生成的常规数据库迁移,也可能在不同的数据库上以不同的方式失败,例如由于某些引擎回滚事务或处理无效数据的方式。
    【解决方案2】:

    对于其他非 sql 开发者,你可以去——你必须使用单引号:

    SELECT *
    FROM parcare_parking
    WHERE parking_on ='2018-10-08'
    

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2014-05-05
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2017-08-17
      • 2010-12-22
      • 2015-12-23
      相关资源
      最近更新 更多