将指定MySQL建表语句转换为等效Knex查询语句
等效Knex查询语句实现
要实现你给出的MySQL建表语句,Knex需要结合schema构建器和原生SQL来设置自增起始值,具体代码如下:
knex.schema.createTable('test', (table) => { // 对应 id INT UNSIGNED NOT NULL AUTO_INCREMENT table.integer('id').unsigned().notNullable().autoIncrement(); // 对应 name VARCHAR(100) table.string('name', 100); // 对应 unique (id) table.unique('id'); }) // 通过原生SQL设置自增起始值为1001 .raw('AUTO_INCREMENT = 1001') .then(() => { console.log('表创建成功'); }) .catch((err) => { console.error('表创建失败:', err); });
或者,如果你更倾向于创建表后单独修改自增起始值,也可以用以下写法:
knex.schema.createTable('test', (table) => { table.integer('id').unsigned().notNullable().autoIncrement(); table.string('name', 100); table.unique('id'); }) .then(() => { // 创建表后执行ALTER语句设置起始值 return knex.raw('ALTER TABLE test AUTO_INCREMENT = 1001'); }) .then(() => { console.log('表创建并配置成功'); }) .catch((err) => { console.error('操作失败:', err); });
说明
Knex的schema构建器没有直接提供设置自增起始值的API,所以需要通过raw()方法执行原生MySQL语句来实现AUTO_INCREMENT = 1001的需求。两种写法都能达到等效效果,可根据你的代码风格选择。
内容的提问来源于stack exchange,提问作者Tony Stark
相关产品推荐
相关产品推荐

