我想创建一个325列的表:
CREATE TABLE NAMESCHEMA.NAMETABLE
(
ROW_ID TEXT NOT NULL , //this is the primary key
324 column of these types:
CHAR(1),
DATE,
DECIMAL(10,0),
DECIMAL(10,7),
TEXT,
LONG,
) ROW_FORMAT=COMPRESSED;
Run Code Online (Sandbox Code Playgroud)
我用TEXT替换了所有VARCHAR,我在MySQL的my.ini文件中添加了Barracuda,这是添加的属性:
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_file_format_check = ON
Run Code Online (Sandbox Code Playgroud)
但我仍然有这个错误:
Error Code: 1118
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.
Run Code Online (Sandbox Code Playgroud)
编辑:我无法更改数据库的结构,因为它是遗留的应用程序/系统/数据库.创建一个新表,它是遗留数据库的导出.
编辑2:我写的这个问题与其他人类似,但内部有一些我在互联网上找到的解决方案,如VARCHAR和Barracuda,但我仍然有这个问题所以我决定打开一个新的问题已经内部的经典答案,看看是否有人有其他答案
在 innodb 中,页面大小被称为默认 16kb。如何将页面大小设置为 8kb?在源编译步骤中是否有设置选项?
我正在尝试在Windows 8.1上的Websphere Liberty服务器上部署iOS的worklight应用程序中心.但是当我尝试通过appcenter控制台添加IBMAppCenter.ipa时,我在服务器日志中遇到异常.
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: 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. {prepstmnt 1563792952 INSERT INTO APPLICATION_STORAGE (CONTENT, AP_FK) VALUES (?, ?) [params=(InputStream) java.io.ByteArrayInputStream@5987916, (null) null]} [code=1118, state=42000]
Run Code Online (Sandbox Code Playgroud)
以下是重现我的问题的方案:
我尝试按照hjpotter92对"Mysql行大小太大"的更改限制的建议启用表APPLICATION_STORAGE的压缩,但没有任何运气.任何帮助将非常感激.
以下是APPLICATION_STORAGE表的定义,该表导致问题:
CREATE TABLE APPLICATION_STORAGE (ID INTEGER NOT NULL AUTO_INCREMENT, CONTENT LONGBLOB, AP_FK INTEGER, PRIMARY KEY (ID)) ENGINE …Run Code Online (Sandbox Code Playgroud) 我有这个错误:
行大小太大 (> 8126)。将某些列更改为
TEXTorBLOB或使用ROW_FORMAT=DYNAMICorROW_FORMAT=COMPRESSED可能会有所帮助。在当前的行格式中,BLOB768 字节的前缀是内联存储的。
为了解决这个问题,我可以将 InnoDB 更改为 MyISAM 吗?