mysql - Knex.js 查询抛出警告 "Calling knex without a tableName is deprecated"

标签 mysql node.js knex.js

我正在为 Mysql 使用 Knex.js。我运行迁移并成功创建表。之后,当我通过此命令命令 knex seed:run 运行种子时,出现以下错误:

Knex:warning - calling knex without a tableName is deprecated. Use knex.queryBuilder() instead.

请查看以下错误和我的代码。我没有找到任何错误的代码。如何解决这个问题?!

终端错误:

Using environment: development
Knex:warning - calling knex without a tableName is deprecated. Use knex.queryBuilder() instead.
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    at Query.Sequence._packetToError (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14)
    at Query.ErrorPacket (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\sequences\Query.js:77:18)
    at Protocol._parsePacket (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\Protocol.js:279:23)
    at Parser.write (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\Parser.js:76:12)
    at Protocol.write (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\wamp64\www\golabi-api\node_modules\mysql\lib\Connection.js:103:28)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:594:20)
    --------------------
    at Protocol._enqueue (C:\wamp64\www\golabi-api\node_modules\mysql\lib\protocol\Protocol.js:145:48)
    at Connection.query (C:\wamp64\www\golabi-api\node_modules\mysql\lib\Connection.js:208:25)
    at C:\wamp64\www\golabi-api\node_modules\knex\lib\dialects\mysql\index.js:161:18
    at Promise._execute (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\debuggability.js:303:9)
    at Promise._resolveFromExecutor (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:483:18)
    at new Promise (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:79:10)
    at Client_MySQL._query (C:\wamp64\www\golabi-api\node_modules\knex\lib\dialects\mysql\index.js:155:12)
    at Client_MySQL.query (C:\wamp64\www\golabi-api\node_modules\knex\lib\client.js:199:17)
    at Runner.<anonymous> (C:\wamp64\www\golabi-api\node_modules\knex\lib\runner.js:149:36)
    at Runner.tryCatcher (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\util.js:16:23)
    at Runner.query (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\method.js:15:34)
    at C:\wamp64\www\golabi-api\node_modules\knex\lib\runner.js:61:21
    at tryCatcher (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\util.js:16:23)
    at C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\using.js:185:26
    at tryCatcher (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:693:18)
    at Promise._fulfill (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise.js:638:18)
    at PromiseArray._resolve (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise_array.js:126:19)
    at PromiseArray._promiseFulfilled (C:\wamp64\www\golabi-api\node_modules\bluebird\js\release\promise_array.js:144:14)

我的 kenxfile.js

module.exports = {

    development: {
        client: 'mysql',
        connection: {
            host: '127.0.0.1',
            user: 'root',
            password: '',
            database: 'golabi',
            charset: 'utf8',
        },
        migrations: {
            tableName: 'knex_migrations' 
        },
        seeds: {
            directory: './seeds' 
        }
    }

};

种子内容:

exports.seed = function(knex, Promise) {
  // Deletes ALL existing entries
  return knex().del('tbl_settings')
    .then(function () {
      // Inserts seed entries
      return knex('tbl_settings').insert([
        {
          id: 1,
          about_us: 'Ali Hesari',
          phone: 05000000,
          mobile: 09300000,
          email: 'xxxxx@gmail.com',
          address: 'xxxx'
        }
      ]);
    });
};

最佳答案

表名应传递给 knex() 而不是 .del()

knex('tbl_settings')
.del()
.then(...)

关于mysql - Knex.js 查询抛出警告 "Calling knex without a tableName is deprecated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49499425/

相关文章:

MySQL 从 csv 字符串中提取数据并插入到第二个表中

node.js - Strongloop/Loopback - 入门 - 服务管理器启动失败

node.js - 使用 NVM 设置 Node 版本或安装(如果不可用)。

javascript - 在 Objection.js 中以多对多方式插入额外字段

mysql - Knex 不返回插入 ID

javascript - 使用具有多个搜索条件的 Knex.js 和 SQL 的条件过滤器

mysql - 错误,使用 PDO 与 mysql 的连接过多显示了我们的数据库用户名和密码?

mysql - 将oracle sql表转换为mysql查询表

mysql - Golang MySQL 错误 - packets.go :33: unexpected EOF

javascript - 使用带有快速服务器的文件