Knex.js种子不起作用

时间:2018-03-26 19:44:46

标签: mysql node.js knex.js

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

  

Knex:警告 - 不推荐在没有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'
        }
      ]);
    });
};

1 个答案:

答案 0 :(得分:3)

您已经收到了错误消息,并且有一些非常nice docs可以帮助您前进。

阅读.del() documentation

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

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