Como o comprimento armazenável do campo do banco de dados é muito pequeno, o limite de armazenamento do tipo de caractere definido foi atingido, resultando em um erro e tipos de dados comumente usados para armazenamento de dados

Cenário do projeto:

提示:这里简述项目相关背景:

Usando o banco de dados MySQL, porque o comprimento de armazenamento do campo do banco de dados é muito pequeno, o limite de armazenamento do tipo de caractere definido foi atingido, resultando em um erro quando os dados são armazenados

Descrição do Problema

提示:这里描述项目中遇到的问题:

Como o comprimento de armazenamento do campo do banco de dados é muito pequeno, um erro é relatado para armazenamento de dados e a mensagem de erro é a seguinte:

Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'remark' at row 1


Análise de causa:

Dica: Preencha a análise do problema aqui:

O comprimento do caractere que pode ser armazenado no campo do banco de dados é muito pequeno, o tipo de armazenamento do campo não é selecionado como o tipo apropriado e o comprimento do caractere armazenado em diferentes tipos de dados é diferente.
insira a descrição da imagem aqui
Portanto, precisamos definir um espaço de armazenamento razoável para os campos no banco de dados, caso contrário, haverá falha de armazenamento ou desperdício de espaço.

solução:

Dica: Preencha a solução específica para o problema aqui:

O tipo de campo apropriado deve ser selecionado e o comprimento de caractere apropriado deve ser definido de acordo com as necessidades reais

Resumir:

Design e seleção de tipo de campo

1. Não deve haver muitos campos em uma única tabela*

Recomenda-se um máximo de 30

Mais campos levarão à degradação do desempenho e aumentarão a dificuldade de desenvolvimento

**

2. Use tipos de dados adequados pequenos e simples*

a. Tipo de string

Use char para comprimento fixo , varchar para comprimento não fixo e aloque espaço apropriado e suficiente

Quando char é consultado, o espaço no final será removido

b. Tipo decimal

Em geral, você pode usar float ou double , que ocupam menos espaço, mas o armazenamento pode perder a precisão

Decimal pode armazenar decimais precisos, use decimal ao armazenar dados financeiros ou requisitos de longitude

c. Hora e data

Normalmente tente usar timestamp , pois ocupa menos espaço, e irá converter automaticamente o fuso horário, não precisa se preocupar com a diferença de horário regional

datetime e timestamp podem armazenar apenas a menor granularidade em segundos, você pode usar o tipo BIGINT para armazenar timestamps no nível de microssegundos

d. Blob e texto de big data

blob e text são tipos de dados de string projetados para armazenar dados muito grandes, mas geralmente é recomendado evitar seu uso

O MySQL tratará cada blob e texto como um objeto independente, e o mecanismo de armazenamento fará um processamento especial ao armazenar. Quando o valor é muito grande, o InnoDB usa uma área de armazenamento externo dedicada para armazenamento, armazena o ponteiro na linha e, em seguida, armazena o valor real externamente. Isso pode causar sérias sobrecargas de desempenho

Blob é uma string binária e text é uma string não binária , e ambas podem armazenar uma grande quantidade de informações. O Blob armazena principalmente imagens, informações de áudio, etc., enquanto o texto pode armazenar apenas arquivos de texto simples.

Terceiro, tente definir a coluna como NOT NULL

a. Quando uma coluna que pode ser NULL é indexada, ela ocupa mais espaço de armazenamento. Geralmente, alterar uma coluna que pode ser NULL para NOT NULL traz menos melhorias.

b. Para colunas que podem ser NULL, o MySQL precisa fazer um processamento especial ao usar índices e comparações de valor, o que consome uma certa quantidade de desempenho e é mais difícil de otimizar

Sugestão: Geralmente é melhor especificar as colunas como NOT NULL, a menos que você realmente precise armazenar valores NULL

4. Tente usar inteiro como chave primária

a. Os tipos inteiros geralmente são a melhor escolha para colunas de identidade porque são rápidos e podem usar AUTO_INCREMENT

b. Os tipos de string devem ser evitados como colunas de identidade, pois consomem espaço e geralmente são mais lentos que os tipos numéricos

c. Mais atenção também é necessária para strings completamente "aleatórias". Por exemplo: strings geradas por MD5(), SHAI() ou UUID(). Os novos valores gerados por essas funções também são distribuídos arbitrariamente em um grande espaço, o que pode fazer com que as instruções INSERT e algumas SELECT fiquem lentas

5. Tipo de dados e configuração de comprimento correspondente

Cada coluna da tabela possui um tipo de dado correspondente, que limita (ou permite) os dados armazenados naquela coluna.
Os tipos de dados comuns são: string, numérico, data e hora, tipos de dados binários.
insira a descrição da imagem aqui
(1), tipo de dados string
insira a descrição da imagem aqui
(2), tipo de dados numéricos
insira a descrição da imagem aqui
(3), tipo de dados de data e hora
insira a descrição da imagem aqui
(4), tipo de dados binários
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/YHLSunshine/article/details/129388628
Recomendado
Clasificación