0

我对'Q()'进行了很长的查询,Sqlite3效果很好,但是postgresqlmysql遇到了奇怪的错误,例如对于postgresql:invalid input syntax for integer: "(" 和对于mySQL:Truncated incorrect DOUBLE value: '('

如何使用 mysql 运行该查询?我的错误在哪里?

这是该查询:

    watchersTuple = self.getWatchers()
    tagsTuple = self.getTags()
    blockedUserTuple = self.getBlockedUser()
    blockedTagTuple = self.getBlockedTag()

    statuses = Status.objects.filter( (Q(author__in = str(watchersTuple)) | Q(tags__in = str(tagsTuple)) | Q(author = self) | Q(recipient = self)) & ~Q(author__in = str(blockedUserTuple)) & ~Q(tags__in = str(blockedTagTuple)) ).distinct()
4

2 回答 2

1

查看查询没有什么明显的。比较 Sqlite3 和 MySql 的原始查询会很有用。此链接向您展示如何打开 SQL 查询调试。

于 2009-12-11T23:06:23.383 回答
1

你还没有发布你的模型,但它看起来像是author一个整数字段,或者可能是一个外键。在这种情况下,为什么要str在值的元组上使用?您可能想检查 author 是否是这些值之一。所以只需删除str呼叫。

它似乎在 sqlite 中工作的原因是 sqlite 忽略字段类型 - 字符串和整数被视为相同。其他 DBMS 更严格。

于 2009-12-12T10:47:14.650 回答