postgresql – Knex在Postgres中创建POINT数据类型

我正在尝试使用POINT数据类型&创建一个模式. knex似乎没有在DB中创建它.然而,它正在创建所有其他领域.

这是我的迁移文件的样子:

exports.up = (knex,Promise) => {
  return Promise.all([
    knex.schema.createTableIfNotExists('users',(table) => {
      table.uuid('id').primary()
      table.string('username',35)
      table.text('pword').notNullable()
      table.string('first_name',55)
      table.string('last_name',55)
      knex.schema.raw('coordinates POINT DEFAULT POINT (37.3875,-122.0575)')
      table.timestamp('date_created').defaultTo(knex.fn.now())
    })
  ])
}

exports.down = (knex,Promise) => {
  return Promise.all([
    knex.schema.dropTableIfExists('users')
  ])
}

这是失败的代码行:

knex.schema.raw('coordinates POINT DEFAULT POINT (37.3875,-122.0575)')

我也尝试删除schema属性:

knex.raw('coordinates POINT DEFAULT POINT (37.3875,-122.0575)')

没有打印出错误,它似乎无声地失败.

编辑1:

我用以下方法打印出来:knex.schema.raw(‘坐标POINT DEFAULT POINT(37.3875,-122.0575)’).然后(data => console.log(data)).catch(error => console.log(错误))

{ error: coordinates POINT DEFAULT POINT (37.3875,-122.0575) - syntax error at or near "coordinates"
    at Connection.parseE (/Users/james/plural/backend-development/node_modules/pg/lib/connection.js:554:11)
    at Connection.parseMessage (/Users/james/plural/backend-development/node_modules/pg/lib/connection.js:381:17)
    at Socket.<anonymous> (/Users/james/plural/backend-development/node_modules/pg/lib/connection.js:117:22)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:172:18)
    at Socket.Readable.push (_stream_readable.js:130:10)
    at TCP.onread (net.js:542:20)
  name: 'error',length: 92,severity: 'ERROR',code: '42601',detail: undefined,hint: undefined,position: '1',internalPosition: undefined,internalQuery: undefined,where: undefined,schema: undefined,table: undefined,column: undefined,dataType: undefined,constraint: undefined,file: 'scan.l',line: '1081',routine: 'scanner_yyerror' }

解决方法

试试这个:

table.specificType(‘coordinates’,’POINT’).defaultTo(knex.raw(‘POINT(37.3875,-122.0575)’))

对于Knex未涵盖的SQL类型,您始终可以使用以下格式:

table.specificType(‘column_name’,’TYPE’)

相关文章

文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,...
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb...
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才...
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation...
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgr...
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解...