我该如何更改限制
行大小太大(> 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 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) 我知道这个问题已被多次询问(和回答),但它们似乎都不是我所看到的同样的问题......
给我问题的表只有两列:第一个字段是整数,第二个字段是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) 我从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.
我在网上看到了很多关于这个错误的东西,但没有一个能解决我的问题.
注意:此错误不是来自表的创建,而是来自插入具有相当大数据的行.
笔记:
该表没有很多列.架构如下:
+----------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| message_data | longtext | NO | | …