我的问题是,是否有可能将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)
答案 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();
});