【发布时间】:2016-02-23 02:09:08
【问题描述】:
我的 MySQL 数据库有问题。我想运行一个巨大的插入/重复语句并收到 1118 错误。
这个问题的神秘之处在于,它依赖于“完整”的陈述。如果我删除一行上的一个字符(无论哪一行),该语句都会起作用。如果我添加一个字符(无论哪一行),我都会收到 1118 错误。
我尝试增加 my.ini 上的许多值,例如innodb_log_file_size、innodb_buffer_pool_size 和 innodb_log_buffer_size。没有什么对我有用。
限制在哪里?
我可以运行以下命令,但是 Varchar(1) 的 3 个变量正在被删除。如果我将 Varchar 更改为文本,我会收到错误消息。
由于 Stackoverflow 字符限制,我在此处上传了我的声明:http://pastie.org/private/yriegkyurqavnqezzbsqta
在 '' 之间你可以填充大约 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 个字符的语句?
提前谢谢你!
【问题讨论】:
-
我已将我的 innodb_log_file_size 增加到 20000M。没有区别。
-
好的,调查一下。您可以将插入命令放在 paste.org 上吗?
-
您好,德鲁,感谢您的帮助。这是完整的插入命令:pastie.org/private/9eqwsxly5kimamlaqqsag