编译SELECT查询时检测到未定义的绑定

时间:2019-01-25 01:31:52

标签: graphql knex.js strapi

我正在关注strapi的教程,并且被困在查询餐厅的菜肴的地方。我确定一切都已正确设置,并定义了一个(餐厅)到许多(菜)的关系,但是查询不起作用。我已将其追溯到实际的查询中:

query {
    restaurant(id: "1") {
    id
    name
    dishes {
      name
      description
    }
  }
}

在操场上运行时返回错误。查询在我编写时没有显示任何问题,并且不允许我编写类似的内容:

query {
    restaurant(where:{id: "1"}) {
    id
    name
    dishes {
      name
      description
    }
  }
}

我的数据库是mysql,两个表如下所示:

mysql> describe dishes;
+-------------+---------------+------+-----+-------------------+-----------------------------+
| Field       | Type          | Null | Key | Default           | Extra                       |
+-------------+---------------+------+-----+-------------------+-----------------------------+
| id          | int(11)       | NO   | PRI | NULL              | auto_increment              |
| name        | varchar(255)  | YES  | MUL | NULL              |                             |
| description | longtext      | YES  |     | NULL              |                             |
| price       | decimal(10,2) | YES  |     | NULL              |                             |
| restaurant  | int(11)       | YES  |     | NULL              |                             |
| created_at  | timestamp     | NO   |     | CURRENT_TIMESTAMP |                             |
| updated_at  | timestamp     | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+---------------+------+-----+-------------------+-----------------------------+
7 rows in set (0.00 sec)


mysql> describe restaurants;
+-------------+--------------+------+-----+-------------------+-----------------------------+
| Field       | Type         | Null | Key | Default           | Extra                       |
+-------------+--------------+------+-----+-------------------+-----------------------------+
| id          | int(11)      | NO   | PRI | NULL              | auto_increment              |
| name        | varchar(255) | YES  | MUL | NULL              |                             |
| description | longtext     | YES  |     | NULL              |                             |
| created_at  | timestamp    | NO   |     | CURRENT_TIMESTAMP |                             |
| updated_at  | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+--------------+------+-----+-------------------+-----------------------------+
5 rows in set (0.00 sec)

strapi自动生成这些表。

操场上的全部错误是这样的:

{
  "errors": [
    {
      "message": "Undefined binding(s) detected when compiling SELECT query: select `restaurants`.* from `restaurants` where `restaurants`.`id` = ? limit ?",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "restaurant"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: Undefined binding(s) detected when compiling SELECT query: select `restaurants`.* from `restaurants` where `restaurants`.`id` = ? limit ?",
            "    at QueryCompiler_MySQL.toSQL (/Users/redqueen/development/deliveroo/server/node_modules/knex/lib/query/compiler.js:85:13)",
            "    at Builder.toSQL (/Users/redqueen/development/deliveroo/server/node_modules/knex/lib/query/builder.js:72:44)",
            "    at /Users/redqueen/development/deliveroo/server/node_modules/knex/lib/runner.js:37:34",
            "From previous event:",
            "    at Runner.run (/Users/redqueen/development/deliveroo/server/node_modules/knex/lib/runner.js:33:30)",
            "    at Builder.Target.then (/Users/redqueen/development/deliveroo/server/node_modules/knex/lib/interface.js:23:43)",
            "    at runCallback (timers.js:705:18)",
            "    at tryOnImmediate (timers.js:676:5)",
            "    at processImmediate (timers.js:658:5)",
            "    at process.topLevelDomainCallback (domain.js:120:23)"
          ]
        }
      }
    }
  ],
  "data":

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

这似乎是trapi的alpha.v20和alpha.v21版本的错误。已经发布了一个错误修复程序来解决该问题,github上的问题线程为here.