【问题标题】:Knex.js query throws warning "Calling knex without a tableName is deprecated"Knex.js 查询抛出警告“不推荐使用没有 tableName 的调用 knex”
【发布时间】:2018-09-05 01:37:55
【问题描述】:

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

Knex:warning - 不推荐在没有 tableName 的情况下调用 knex。采用 knex.queryBuilder() 代替。

请查看以下错误和我的代码。我没有发现任何错误的代码。怎么解决?!

终端错误:

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'
        }
      ]);
    });
};

【问题讨论】:

    标签: mysql node.js knex.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 2018-03-27
      • 2016-09-19
      相关资源
      最近更新 更多