gpt4 book ai didi

mysql - 重命名后自动递增字段无默认值

转载 作者:行者123 更新时间:2023-11-29 17:21:05 26 4
gpt4 key购买 nike

我需要重命名我的一个表和该表中的一列。

我已经通过 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_new_id_col”列”

如何以正确的方式重命名带有 id 的自动整数列?

服务器响应并出现下一个错误: 代码:'ER_NO_DEFAULT_FOR_FIELD', 错误号:1364, sqlMessage: 'Field\'tableToRename_new_id_col\' 没有默认值', sqlState: 'HY000', 索引:0,

UPD。之前我创建了一个表,我想将其重命名为:

.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');
});

最佳答案

这是 mysql 设置,当你想在没有所有数据的情况下插入新位置时。

如果不发送值,您可以将 mysql 配置为设置 NULL。临时解决方案(直到重新启动服务器):SET @@GLOBAL.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

或者您可以在 my.ini 文件中设置它。以下是模式详细信息:http://webnetkit.com/error-sqlstatehy000-general-error-1366-incorrect-integer-value-for-column/

关于mysql - 重命名后自动递增字段无默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51250057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com