KnexJS字符编码

时间:2018-01-12 13:42:50

标签: mysql node.js knex.js

我的问题是,是否有可能将KnexJS的字符编码更改为utf8mb4。它似乎默认为utf8。

当我尝试通过

在NodeJS服务器上创建当前KnexJS版本的表时
db.schema.createTable('testtable', table => {
  table.increments('id');
  table.string('foo').unique();
});

KnexJS抛出一个错误,说明指定的密钥太长了。这是因为KnexJS的varchar长度默认为255. utf8mb4字段的最大长度为191个字符。

是否可以选择告诉KnexJS使用哪种字符编码(从而将varchar字段的长度更改为191),或者我必须将每个varchar字段的长度设置为191,方法是将其作为第二个参数传递给{ {1}}?

错误消息:

table.string(..., 191)

1 个答案:

答案 0 :(得分:0)

knex的错误是你得到了这个错误。这是你要创建长度为255的字符串列,如果你没有传递任何参数,这是默认值。

您可以通过以下方式更改列的默认长度:

db.schema.createTable('testtable', table => {
  table.increments('id');
  table.string('foo', 300).unique(); // 300 length
});

或者,如果您想存储非常大的文本,可以使用:

db.schema.createTable('testtable', table => {
  table.increments('id');
  table.text('foo').unique();
});