MySQL Error number: 3105; Symbol: ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释 Error number: 3105; Symbol: ER_NON_DEFAULT_VALUE_FOR_GE…

文档解释

Error number: 3105; Symbol: ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN; SQLSTATE: HY000

Message: The value specified for generated column ‘%s’ in table ‘%s’ is not allowed.

Error 3105:ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN

错误说明

错误代码3105,ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN,是MySQL的一个错误,被定义在MySQL的行为标准中,主要表明用户没有为被生成的列(generated column)提供了一个默认值。错误提示,表示不可以将其它值提供给被生成的列,因为这样的话反而会使得MySQL的操作出错,比如说:不能使用相应的计算,比如说不能加减乘除等。

常见案例

MySQL错误3105,ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN,通常发生在用户尝试插入已存在列作为被生成列时,比如说一些复制,分离表格或者更新操作时,如果某些默认值没有被指定的话,就会发生此错误。此外,还会发生在用户想以此被生成列为主键,或者包括它们在内的复杂索引时。

如果在列定义时,没有指定一个默认值,那么在对应列没有传入值时,MySQL就会报3105错误。

另外,错误3105也可能是因为能力或者权限的限制引起的。

解决方法

很明显,解决方法就是给每一个被生成列定义一个默认值,尤其是当使用DML**类操作时,这样可以避免出现这个错误。

若不能将默认值指定给每一列的话,MySQL也允许每次都从程序指定默认值,而不是使用现成的占位符,但是这也增加了增加了查询的复杂度。

另外:可以为被生成列指定存储零值,并以此来替换NULL值,这样就可以防止MySQL报错。同时,也可以尝试给每一条数据添加一个显示在查询结果中的一个默认值,而不是在实际的查询语句中指定这个默认值。另外,如果是因为权限的问题,可以尝试分配更多的权限给MySQL数据库,同时确保MySQL用户是可以操作这些字段的。

另外,应当留意MySQL的数据类型和数据完整性,当定义一些复杂索引时,应当规范地使用这些索引,数据完整性也要加以考虑,来确保程序运行的稳定性,而不会因为可能出现的遗漏而出现这样的错误。

香港美国云服务器首选港服(Server.HK),2H2G首月10元开通。
港服(Server.HK)(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

为您推荐

港服(Server.HK)MongoDB教程:MongoDB 索引

MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件...

港服(Server.HK)PostgreSQL教程PostgreSQL 别名

PostgreSQL 别名 我们可以用 SQL 重命名一张表或者一个字段的名称,这个名称就叫着该表或该字段的别名。 创建...

港服(Server.HK)Memcached教程:Memcached stats 命令

Memcached stats 命令 Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号...

港服(Server.HK)Redis教程:Redis 数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集...

港服(Server.HK)Redis教程:Redis GEO

Redis GEO Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 ...
返回顶部