Knex JS种子文件返回有关SQL语法的无意义错误

时间:2017-04-04 11:23:06

标签: javascript node.js knex.js

我想运行一些knex种子,至少对我来说我得到一个毫无意义的错误:错误:ER_PARSE_ERROR:你的SQL语法有错误;查看与您的M对应的手册 ariaDB服务器版本,用于在')附近使用正确的语法。在第1行

我不知道如何调试我的代码是我的迁移架构:

exports.up = function(knex, Promise) {
  return Promise.all([
      knex.schema.createTable('codes', table => {
          table.increments('id').primary();
          table.string('code').notNullable().unique();
          table.text('description').defaultTo(null);
          table.integer('system_id').unsigned().references('systems.id').defaultTo(null);
          table.integer('unit_id').unsigned().references('units.id').defaultTo(null);
    }),
    knex.schema.createTable('tags', table => {
        table.increments('id').primary();
        table.text('name').defaultTo(null);    
    }),
    knex.schema.createTable('systems', table => {
        table.increments('id').primary();
        table.text('name').defaultTo(null);    
    }),
    knex.schema.createTable('units', table => {
        table.increments('id').primary();
        table.text('name').defaultTo(null);    
    }),
    knex.schema.createTable('codes_tags', table => {
        table.increments('id').primary();
        table.integer('tag_id').unsigned().references('tags.id');
        table.integer('code_id').unsigned().references('codes.id');

    })
  ])
};

exports.down = function(knex, Promise) {
    return Promise.all([
        knex.schema.dropTable('codes_tags'),
        knex.schema.dropTable('codes'),
        knex.schema.dropTable('tags'),
        knex.schema.dropTable('systems'),
        knex.schema.dropTable('units')

    ]);
};

这是我的种子文件:

import { CODES } from './data/constants'

exports.seed = async function(knex, Promise) {
  return await populateData(knex, CODES)
};

async function populateData(knex, data){
  for(let code in data){
    let system = await knex('systems').where({name: data[code].system}).select('id')
    if(!system){
      system = await knex('systems').insert({name: data[code].system});
    }
    let tag = await knex('tags').where({name: data[code].type}).select('id');
    if(!tag){
      tag = await knex('tags').insert({name: data[code].type})
    }
    let code = await knex('codes').insert({code: code, system_id: system})
    await knex('codes_tags').insert({code_id: code, system_id: system})
  }
}

0 个答案:

没有答案