重命名后自动递增的字段没有默认值

lpwwtiir  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(308)

我需要重命名我的一个表和这个表中的一列。
我已经用knex迁移完成了下一步:

.alterTable('tableToRename', table => {
    table.dropForeign('id_reference1');
    table.dropForeign('id_reference2');
})
.alterTable('relatedTable1', table => {
    table.dropForeign('tableToRename_id_col');
})
.renameTable('tableToRename', 'newName')
.alterTable('newName', table => {
    table.renameColumn('tableToRename_id_col', 'tableToRename_new_id_col');
})
.alterTable('relatedTable1', table => {
    table.renameColumn('tableToRename_id_col', 'tableToRename_new_id_col');
    table.foreign('tableToRename_new_id_col').references('newName.tableToRename_new_id_col');
})
.alterTable('newName', table => {
    table.foreign('id_reference1').references('table3');
    table.foreign('id_reference2').references('table4');
})

因此,现在当我尝试向newname表添加新记录时,会出现下一个错误:
错误(1366)hy000:第1行“tabletorename\u new\u id\u col”列的“不正确的整数值”
如何以正确的方式重命名id为的自动整数列?
服务器响应,出现下一个错误:代码:“er\u no\u default\u for\u field”,错误号:1364,sqlmessage:“field'tabletorename\u new\u id\u col\”没有默认值,sqlstate:“hy000”,索引:0,
升级。之前,我创建了一个表,我想将其重命名为:

.createTableIfNotExists('tableToRename', tab => {
          t.charset('utf8mb4');
          table.bigincrements('tableToRename_id_col')
            .unsigned()
            .primary()
            .notNullable();
          table.bigint('id_reference1')
            .notNullable()
            .unsigned()
            .references('id_reference1')
            .inTable('table_reference1');
          table.bigint('id_reference2')
            .notNullable()
            .unsigned()
            .references('id_reference2')
            .inTable('table_reference2');
 });
lp0sw83n

lp0sw83n1#

听起来像是knex的窃听器。如果你还没有这样做,你应该发送错误报告给knex的问题。在此之前,您可以通过手动将newid列设置为auto increment来解决这个问题。您还可以使用.tosql()检查在那里生成了什么样的查询。
有一件事是很好的,那就是完全复制的情况,您首先创建表,然后修改它,并显示它失败了。这样人们就能更容易地找出确切的问题。

oymdgrw7

oymdgrw72#

当您想插入一个新位置而不需要所有数据时,这是mysql设置。
如果不发送值,可以将mysql配置为null。临时解决方案(直到您重新启动服务器):设置@@global.sql\u mode='无自动创建用户,无引擎替换';
也可以在my.ini文件中设置。以下是模式详细信息:http://webnetkit.com/error-sqlstatehy000-general-error-1366-incorrect-integer-value-for-column/

相关问题