使用 Knex.js 增加 Oracle DB 表中的列大小

Mar*_*ali 2 oracle size node.js knex.js

我的表中有一个密码列,存储在 OracleDB 11g 中。

为了在其上存储哈希密码,我需要将其大小从 25 增加到 60 或 100 字节。

我不想手动执行此操作,我希望我可以使用 KnexJS 找到脚本或其他任何内容(例如迁移或种子)

谢谢。

Dan*_*han 6

您想要做的正确术语是“增加”,而不是“增量”。看起来 Knex.js 支持更改列(要创建的)的默认 DDL 以通过该alter方法进行更改。http://knexjs.org/#Schema-alter

理论上,它应该像这样工作:

knex.schema.alterTable('user', function(t) {
  t.string('password', 100).alter();
});
Run Code Online (Sandbox Code Playgroud)

我必须承认,该方法中的以下措辞让我有点担心:

Alter 不会在旧列类型上增量完成,因此如果您想添加 notNull 并保留旧的默认值,则 alter 语句必须同时包含 .notNull().defaultTo(1).alter()。

我不确定这最终意味着什么。在生产中尝试之前,请务必在开发中进行测试!

  • 不太清楚。在 Oracle 数据库中,如果我使用“create table t (c varchar2(30) not null)”创建一个表,然后使用“alter table t修改c varchar2(100)”更改列,则非空约束不会丢失。那么 Knex.js 做了什么导致它丢失呢? (2认同)