相关疑难解决方法(0)

"Mysql行大小太大"的更改限制

我该如何更改限制

行大小太大(> 8126).将某些列更改为TEXT或BLOB或使用ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED可能会有所帮助.在当前行格式中,BLOB内联存储768字节的前缀.

表:

id  int(11) No       
name    text    No       
date    date    No       
time    time    No       
schedule    int(11) No       
category    int(11) No       
top_a   varchar(255)    No       
top_b   varchar(255)    No       
top_c   varchar(255)    No       
top_d   varchar(255)    No       
top_e   varchar(255)    No       
top_f   varchar(255)    No       
top_g   varchar(255)    No       
top_h   varchar(255)    No       
top_i   varchar(255)    No       
top_j   varchar(255)    No       
top_title_a varchar(255)    No       
top_title_b varchar(255)    No       
top_title_c varchar(255)    No       
top_title_d varchar(255)    No       
top_title_e varchar(255)    No       
top_title_f varchar(255)    No       
top_title_g varchar(255)    No …
Run Code Online (Sandbox Code Playgroud)

mysql

91
推荐指数
10
解决办法
15万
查看次数

JPA将JSON列映射到Java Object

我们有一个包含大量列的大表.在我们转移到MySQL Cluster之后,由于以下原因无法创建表:

ERROR 1118(42000):行大小太大.所使用的表类型的最大行大小(不包括BLOB)是14000.这包括存储开销,请查看手册.您必须将某些列更改为TEXT或BLOB

举个例子:

@Entity @Table (name = "appconfigs", schema = "myproject")
public class AppConfig implements Serializable
{
    @Id @Column (name = "id", nullable = false)
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne @JoinColumn (name = "app_id")
    private App app;

    @Column(name = "param_a")
    private ParamA parama;

    @Column(name = "param_b")
    private ParamB paramb;
}
Run Code Online (Sandbox Code Playgroud)

它是用于存储配置参数的表.我想我们可以将一些列组合成一个并将其存储为JSON对象并将其转换为某个Java对象.

例如:

@Entity @Table (name = "appconfigs", schema = "myproject")
public class AppConfig implements Serializable
{
    @Id @Column (name = "id", nullable = false)
    @GeneratedValue …
Run Code Online (Sandbox Code Playgroud)

java mysql orm json jpa

17
推荐指数
4
解决办法
6万
查看次数

ERROR 1118(42000)行大小太大

我知道这个问题已被多次询问(和回答),但它们似乎都不是我所看到的同样的问题......

给我问题的表只有两列:第一个字段是整数,第二个字段是longtext.这是MySQL 5.5.30的转储文件的一部分:

1 - MySQL dump 10.13  Distrib 5.5.30, for Linux (x86_64)
2 --
3 -- Host: localhost    Database: mydatabasename
4 -- ------------------------------------------------------
5 -- Server version   5.5.30-log

32 DROP TABLE IF EXISTS `large_file`;
33 /*!40101 SET @saved_cs_client     = @@character_set_client */;
34 /*!40101 SET character_set_client = utf8 */;
35 CREATE TABLE `large_file` (
36   `id` int(11) NOT NULL AUTO_INCREMENT,
37   `data` longtext,
38   PRIMARY KEY (`id`)
39 ) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1;
40 /*!40101 SET character_set_client = @saved_cs_client */; …
Run Code Online (Sandbox Code Playgroud)

mysql sql

10
推荐指数
3
解决办法
2万
查看次数

恢复Django-mailer数据库时MySQL Error 1118(行大小太大)

我从django应用程序中转储了一个正在运行的生产数据库,并尝试将其迁移到我的本地开发环境.生产服务器运行MySQL 5.1,本地我运行5.6.

在迁移django-mailer的"messagelog"表时,我遇到了可怕的错误1118:

ERROR 1118 (42000) at line 2226: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

我在网上看到了很多关于这个错误的东西,但没有一个能解决我的问题.

注意:此错误不是来自表的创建,而是来自插入具有相当大数据的行.

笔记:

  1. innodb_file_format和innodb_file_format_max变量设置为Barracuda.
  2. 在创建表时,ROW_FORMAT设置为DYNAMIC.
  3. 该表没有很多列.架构如下:

    +----------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | message_data | longtext | NO | | …

mysql django innodb django-mailer

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

mysql ×4

django ×1

django-mailer ×1

innodb ×1

java ×1

jpa ×1

json ×1

orm ×1

sql ×1