nestjs typeorm mysql 添加中文字段 Incorrect string value: '\\xE5\\x8A\\xA8\\xE5\\x8A\\x9B...' for column
时间: 2023-07-03 20:29:29 浏览: 142
这个错误通常是因为数据库的字符集不支持存储中文字符导致的。你可以尝试以下方法来解决这个问题:
1. 确认数据库的字符集是否支持中文字符。可以使用以下命令查看:
```
SHOW VARIABLES LIKE 'character_set_database';
```
如果字符集不支持中文字符,可以使用以下命令修改:
```
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. 确认表和字段的字符集是否正确。可以使用以下命令查看:
```
SHOW CREATE TABLE your_table_name;
```
如果字符集不正确,可以使用以下命令修改:
```
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
```
ALTER TABLE your_table_name MODIFY your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
其中,utf8mb4 是支持中文字符的字符集,utf8mb4_unicode_ci 是对字符进行排序和比较的一种规则。
3. 在 NestJS 中,可以在 TypeORM 的配置中指定字符集和规则:
```
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'your_database_name',
entities: [YourEntity],
synchronize: true,
charset: 'utf8mb4',
collation: 'utf8mb4_unicode_ci',
})
```
这样就可以在 NestJS 中正确地存储和读取中文字符了。
阅读全文