Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误1118行大小太大(>;8126)_Mysql_Size_Row - Fatal编程技术网

MySQL错误1118行大小太大(>;8126)

MySQL错误1118行大小太大(>;8126),mysql,size,row,Mysql,Size,Row,我的MySQL数据库有问题。我想运行一个巨大的insert/on duplicate语句并收到一个1118错误 这个问题的神秘之处在于,它取决于“完整”的陈述。如果我删除一行中的一个字符(无论是哪一行),该语句将起作用。如果我添加一个字符(无论是哪一行),我将收到1118错误 我尝试增加my.ini上的许多值,例如innodb_log_file_size、innodb_buffer_pool_size和innodb_log_buffer_size。对我来说什么都不管用 限制在哪里 我可以运行以下

我的MySQL数据库有问题。我想运行一个巨大的insert/on duplicate语句并收到一个1118错误

这个问题的神秘之处在于,它取决于“完整”的陈述。如果我删除一行中的一个字符(无论是哪一行),该语句将起作用。如果我添加一个字符(无论是哪一行),我将收到1118错误

我尝试增加my.ini上的许多值,例如innodb_log_file_size、innodb_buffer_pool_size和innodb_log_buffer_size。对我来说什么都不管用

限制在哪里

我可以运行以下命令,但是使用Varchar(1)的3个变量被截断了。如果我将Varchar更改为text,我将收到错误

This is the create table code:
CREATE TABLE `produktliste_icecat` (
`EAN` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Fehler` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_high` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_low` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_thumb` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Name` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Titel` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Quality` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Anleitung` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Datenblatt` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_URL` VARCHAR(500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Garantie` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Beschreibung_kurz` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Beschreibung_lang` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Zusammenfassung_kurz` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Zusammenfassung_lang` VARCHAR(1500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Titel` VARCHAR(1500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Name` VARCHAR(1) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert` VARCHAR(1) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie_Zuordner` VARCHAR(1) NOT NULL COLLATE 'utf8_general_ci',
`Icecat_Eigenschaft_Titel_ID` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_alternative_EAN` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_presentation` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_local` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie_Eigenschaft_suchbar` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Titel_Prio` VARCHAR(3300) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_Prio` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
UNIQUE INDEX `EAN` (`EAN`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
由于Stackoverflow字符限制,我已将我的声明上载到此处:

在“”之间,您可以填充大约12569个随机字符,在12570之后,我收到错误,无论您在何处填充它们都无关紧要

This is the create table code:
CREATE TABLE `produktliste_icecat` (
`EAN` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Fehler` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_high` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_low` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Bild_thumb` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Name` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Titel` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Quality` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Anleitung` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Datenblatt` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_URL` VARCHAR(500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Garantie` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Beschreibung_kurz` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Beschreibung_lang` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Zusammenfassung_kurz` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Zusammenfassung_lang` VARCHAR(1500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Titel` VARCHAR(1500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Name` VARCHAR(1) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert` VARCHAR(1) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie_Zuordner` VARCHAR(1) NOT NULL COLLATE 'utf8_general_ci',
`Icecat_Eigenschaft_Titel_ID` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_alternative_EAN` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_presentation` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_local` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Kategorie_Eigenschaft_suchbar` VARCHAR(2500) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Titel_Prio` VARCHAR(3300) NOT NULL COLLATE 'utf8_unicode_ci',
`Icecat_Eigenschaft_Wert_Prio` VARCHAR(700) NOT NULL COLLATE 'utf8_unicode_ci',
UNIQUE INDEX `EAN` (`EAN`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
这是我的my.ini:

[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql" 
tmpdir = "C:/xampp/tmp" 
datadir = "Z:/xampp_sql/data"
pid_file = "mysql.pid"
key_buffer = 1G
max_allowed_packet = 500M
sort_buffer_size = 4M
net_buffer_length = 4M
read_buffer_size = 50M
read_rnd_buffer_size = 1024K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
innodb_buffer_pool_size = 1G
query_cache_type = 1
innodb_log_file_size = 20000M
innodb_log_buffer_size=1250M
innodb_flush_log_at_trx_commit=2
innodb_thread_concurrency=0
innodb_file_per_table

bind-address="0.0.0.0" 
plugin_dir = "C:/xampp/mysql/lib/plugin/" 
skip-federated
server-id   = 1
innodb_data_home_dir = "C:/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/data"
innodb_additional_mem_pool_size = 2M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
有人知道我如何在一个语句中运行超过12570个字符的语句吗


提前谢谢你

使用create表格和pastie url中的insert语句(已删除db name引用)

这就是我得到的

错误1406:列的数据太长 Icecat\u Eigenschaft\u Wert\u演示文稿

这是一个
varchar(1000)

修复该问题并继续下一条错误消息(大概是这样)。解决这个问题。冲洗并重复

我只是得到了一个不同的错误消息,如上所示

运行mysql 5.6.24

参见手册第页:

尽管InnoDB支持大于65535字节的行大小 在内部,MySQL本身为 所有列的组合大小:

虽然看看你的创作,这似乎不是一个问题的时刻。但要记住一点。如何解决?以下内容可能也来自该手册页面:

除可变长度列(VARBINARY, VARCHAR、BLOB和TEXT)略少于数据库的一半 页也就是说,最大行长度约为8000字节。长条 并且长文本列必须小于4GB,并且总行长, 包括BLOB和TEXT列,必须小于4GB

如果一行的长度小于半页,则所有行都存储在本地 在页面内。如果超过半页,则显示可变长度的列 选择用于外部页外存储,直到行符合 半页,如第14.12.2节“文件空间管理”所述

为外部离页选择的BLOB列的行大小 存储不应超过组合重做日志文件大小的10%。如果 行大小超过组合重做日志文件大小InnoDB的10% 可能会覆盖最近的检查点,这可能会导致丢失 崩溃恢复期间的数据。(Bug#69477)


因此,当您达到某个阈值时,开始转换为
文本
数据类型等。

我已将innodb日志文件的大小增加到20000M。没什么区别。好的,调查一下。你能把insert命令放在pastie.org上吗?嗨,Drew,谢谢你的帮助。这是完整的插入命令:嗨,德鲁,谢谢你的详细回答。我已经用更新的my.ini编辑了我的问题,并创建了代码。问题不在于Varchars,即使用Varchars运行的语句,因为所有长值都被截断了。如果我将varchars更改为text,我将得到一个错误。您能运行我的新创建代码并将其中一个Varchar(1)值更改为text吗?那你应该知道我的错误。我的mysql工具在没有任何通知或警告的情况下删除了长值。提前谢谢你,我将尝试几次修改。这里的第一个是使用您的新编辑创建,并运行insert,我得到错误1406:数据对于列
Icecat\u Kategorie\u Zuordner
下一次迭代太长,如果我将3
varchar(1)
更改为
text
,我会得到错误1118行太大(>8126)这里有一些链接,由于我不打算对我的服务器执行此操作,我将此留给您进行调查。祝你好运