typeORM报 QueryFailedError: Data truncated for column ‘role‘ at row 3

news/2024/11/15 7:24:09/

typeORM报 QueryFailedError: Data truncated for column ‘role’ at row 3

今天博主在拉下项目后配置完数据库文件后发现TypeORM连接不上数据库。紧接着报QueryFailedError: Data truncated for column 'role' at row 3这个错误。

这个问题一出来,必须得把锅推给TypeORM

该错误提示为“数据被截断,无法写入’role’列”。通常情况下,该错误是由于数据超过了该列的最大长度或类型不匹配所引起的。建议检查列的定义和数据类型,确保输入的数据不会超出该列的长度。

但由于博主使用的是NestJS框架集成TypeORM来操作数据库,所以这个问题肯定是TypeORM的问题。

遇到这个问题,有两种解决办法:

方法一:

修改TypeORM连接配置,不要让TypeORM对数据库进行热更新;修改连接参数

export const AppDataSource = new DataSource({type: 'mysql',host: 'localhost',port: 3306,username: 'root',password: 'password',database: 'xxxxx',// charset: 'utf8mb4',timezone: '+08:00',synchronize: false, // 取消同步,修改为falselogging: false, entities: [Admin, Role, Buildequ, Equtype], // 数据表实体
});

synchronize参数修改为false,不要让TypeORM去操作数据库

方法二:

查看数据库中是否已经存在项目需要的数据库,同时检查数据库表里字段的排序是否和实体定义时候的顺序一致。

比如一个实体:

import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn } from 'typeorm';
import { ApiProperty } from '@nestjs/swagger';/*** 健身器材类型实体*/
@Entity('equType')
export class Equtype {@ApiProperty({ description: 'id' })@PrimaryGeneratedColumn('uuid')id: string;@ApiProperty({ description: '类型名称' })@Column({ length: 255 })name: string;@ApiProperty({ description: '状态:0-未启用,1-启用' })@Column({ type: "enum", enum: [0, 1], default: 1 })status: number;@CreateDateColumn()add_time: Date
}

那么TypeORM在操作数据自动建表的时候(前提是synchronize属性设置为true),它建表时候的属性的顺序是按着文件从上往下开始建表的。

idnamestatusadd_time
1名称12023-06-03

倘若之前有数据库文件,但某个表的顺序不一致,就会报这个错误!解决办法也很简单,数据库文件备份,删除数据库中的表,让TypeORM自动帮你建一个。


http://www.ppmy.cn/news/241433.html

相关文章

vue制作自己的组件库(仿ElementUI)

1.首先自己创建个新的vue项目,之后更改下目录形式,将src文件更改为examples,这里是专门放组件展示的md文件,packages文件里是放自己写的组件代码 2.然后是开始配置vue.config.js文件 ,其中md-loader是读取md文件的相关…

代驾平台怎么运营朋友圈

时代飞速发展的今天,人们的生活水平不断提高,酒局饭局日渐增多,代驾这个新兴行业发展前景一片大好,对于代驾平台怎么运营朋友圈更是一筹莫展,针对这一些情况,指针跃动今天就来说说。 对于朋友圈的运营&…

UNIX域套接字

一、UNIX域流式套接字 1.本地地址 struct sockaddr_un { unsigned short sun_family; /* 协议类型 */ char sun_path[108]; /* 套接字文件路径 */ }; 2.UNIX域流式套接字 UNIX 域流式套接字的用法和TCP套接字基本一致,区别在于使用的协议和地址不同 …

安装和使用MySQL

文章目录 零、学习目标一、获取MySQL安装程序二、安装MySQL数据库管理系统三、启动并使用MySQL命令行(一)启动MySQL命令行(二)在MySQL命令行里操作数据库1、显示数据库2、使用数据库3、查看数据库里的表4、查看表的记录 零、学习目…

固态硬盘比机械硬盘到底快多少呢

现在主板常用的硬盘接口有两种一种SATA,一种M.2。SATA3.0版本(8芯线)理论传输速度6Gb/s600MB/s,原来2.0的(4芯线)理论速度3Gb/s300MB/sM.2接口有2种。socket2(Bkey-ngff)普通M.2接口…

详解电脑机械硬盘装什么系统好

一般来说,机械硬盘的运行速度会比固态硬盘的要慢些。有不少网友的电脑里面只有机械硬盘,在更换机械硬盘后需要重装系统,但是不知道机械硬盘装什么系统好。下面小编就跟大家分析下机械硬盘安装系统的建议。 其实目前哪种windows系统都可以安装…

HCIA-动态路由

目录 动态路由: 动态路由的分类 按工作区域分类: 按算法和工作机制分类: 距离矢量路由协议: 链路状态路由协议: OSPF协议计算路由步骤: OSPF协议 OSPF协议报文: OSPF三张表 OSPF路由…

Ansible基础5——条件语句、循环语句、handlers、任务失败处理

文章目录 一、 循环语句1.1 单量循环1.2 多量循环1.3 老版本用法1.4 loopregister 二、条件判断2.1 根据变量状态判断2.2 根据变量是否存在判断2.3 根据事实判断2.4 多条件判断2.4.1 and用法2.4.2 or用法 2.5 循环判断2.6 根据上个任务结果判断 三、handlers处理程序四、任务失…