簡體   English   中英

mysqli行大小太大

[英]mysqli row size too large

我試圖將數據插入正在使用innodb存儲引擎的mysql表中,並收到此錯誤:

Mysqli statement execute error : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs

我理解該錯誤,但是我的表幾乎只由text和mediumtext列組成。 基本上,我正在嘗試從Web服務中存儲一堆長度可變的xml響應。 我能夠保存這些響應(請求在批處理過程中按順序發生),直到到達col14為止,在該處插入響應會出現上述錯誤

我的備份想法(如果我無法解決)是將xml保存在服務器上,並將文件位置放入數據庫中。

我已包含創建表代碼

CREATE TABLE IF NOT EXISTS `qb_results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `col1` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  `col2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `col3` text COLLATE utf8_unicode_ci,
  `col4` text COLLATE utf8_unicode_ci,
  `col5` text COLLATE utf8_unicode_ci,
  `col6` text COLLATE utf8_unicode_ci,
  `col7` mediumtext COLLATE utf8_unicode_ci,
  `col8` mediumtext COLLATE utf8_unicode_ci,
  `col9` mediumtext COLLATE utf8_unicode_ci,
  `col10` mediumtext COLLATE utf8_unicode_ci,
  `col11` mediumtext COLLATE utf8_unicode_ci,
  `col12` mediumtext COLLATE utf8_unicode_ci,
  `col13` mediumtext COLLATE utf8_unicode_ci,
  `col14` mediumtext COLLATE utf8_unicode_ci,
  `col15` mediumtext COLLATE utf8_unicode_ci,
  `col16` mediumtext COLLATE utf8_unicode_ci,
  `col17` mediumtext COLLATE utf8_unicode_ci,
  `col18` mediumtext COLLATE utf8_unicode_ci,
  `updated_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=61 ;

編輯-更改了要編號的列,因為它們是特定於業務的,並且認為沒有必要或相關的實際列名。 規范化實際上可以解決問題,但仍不能在給定上下文的情況下解釋錯誤(錯誤表示使用文本列,而該文本列已在使用)

我也有同樣的問題。 請執行以下操作:設置ENGINE = MyISAM。 另外,如果您的腳本過大,則可能需要更改腳本的執行時間。 在這種情況下,打開PHP的配置文件(對於Windows為php.ini)並設置

max_execution_time=150 //(suppose) you can set it whatever you feel right.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM