代码之家  ›  专栏  ›  技术社区  ›  Ali Hesari

Knex公司。js query抛出警告“不推荐在没有表名的情况下调用knex”

  •  3
  • Ali Hesari  · 技术社区  · 6 年前

    我在用Knex。js for Mysql。我成功地运行了迁移和创建的表。之后,当我通过这个命令运行seeds时 knex seed:run 我得到以下错误:

    Knex:警告-不推荐在没有表名的情况下调用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 回复  |  直到 5 年前
        1
  •  7
  •   nicholaswmin    5 年前

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

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