【问题标题】:The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs所用表类型的最大行大小(不包括 BLOB)为 65535。您必须将某些列更改为 TEXT 或 BLOB
【发布时间】:2012-09-14 21:34:39
【问题描述】:

我在尝试创建的表上收到以下消息。

所用表类型的最大行大小为 65535,不包括 BLOB。您必须将某些列更改为 TEXT 或 BLOB

请问有人知道答案吗?

-- Table `warrington_central`.`job`  
-- -----------------------------------------------------  

CREATE  TABLE IF NOT EXISTS `warrington_central`.`job` (  
  `id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT ,  
  `alias_title` VARCHAR(255) NOT NULL ,  
  `reference_number` VARCHAR(100) NOT NULL ,  
  `title` VARCHAR(255) NOT NULL ,  
  `primary_category` SMALLINT(5) UNSIGNED NOT NULL ,  
  `secondary_category` SMALLINT(5) UNSIGNED NOT NULL ,  
  `tertiary_category` SMALLINT(5) UNSIGNED NULL ,  
  `address_id` BIGINT(20) UNSIGNED NOT NULL ,  
  `geolocation_id` BIGINT(20) UNSIGNED NULL ,  
  `company` VARCHAR(255) NOT NULL ,  
  `description` VARCHAR(10000) NOT NULL ,  
  `skills_required` VARCHAR(10000) NOT NULL ,  
  `job_type` TINYINT(2) UNSIGNED NOT NULL ,  
  `experience_months_required` TINYINT(2) UNSIGNED NOT NULL ,  
  `experience_years_required` TINYINT(2) UNSIGNED NOT NULL ,  
  `salary_range` VARCHAR(30) NOT NULL ,  
  `extra_benefits_above_salary` VARCHAR(500) NOT NULL ,  
  `available_from` DATE NULL ,  
  `available_to` DATE NULL ,  
  `extra_location_details` VARCHAR(1000) NOT NULL ,  
  `contact_email` VARCHAR(100) NOT NULL ,  
  `contact_phone_number` VARCHAR(20) NOT NULL ,  
  `contact_mobile_number` VARCHAR(20) NOT NULL ,  
  `terms_conditions_application` VARCHAR(5000) NOT NULL ,  
  `link_to_profile` ENUM('0','1') NOT NULL ,  
  `created_on` DATETIME NOT NULL ,  
  `updated_on` DATETIME NOT NULL ,  
  `updated_by` BIGINT(20) UNSIGNED NOT NULL ,  
  `add_contact_form` ENUM('0','1') NOT NULL ,  
  `admin_package_id` TINYINT(1) UNSIGNED NOT NULL ,  
  `package_start_date` DATETIME NOT NULL ,  
  `package_end_date` DATETIME NULL ,  
  `package_comment` VARCHAR(500) NOT NULL ,  
  `viewable_to_members_only` ENUM('0','1') NOT NULL ,  
  `advertise_to` DATETIME NULL ,  
  `show_comment` ENUM('0','1') NOT NULL ,  
  `hits` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0 ,  
  `visible` ENUM('0','1') NOT NULL DEFAULT '0' ,  
  `approved` ENUM('I/* large SQL query (3.9 KB), snipped at 2,000 characters */
/* SQL Error (1118): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs */
SHOW WARNINGS;

【问题讨论】:

  • 在这种情况下我需要更改哪一列
  • 这是不允许的描述 VARCHAR(10000) NOT NULL , Skills_required VARCHAR(10000) NOT NULL ,
  • 您需要按照错误消息中的说明进行操作 - 将一些更改为 text 数据类型。足够行大小,不包括blobtext类型,不超过65535。你不明白错误信息吗?
  • 不抱歉 - 哪些列的数据类型不正确
  • 它们都没有不正确的数据类型。问题出在 ROW 上,而不是任何一列。行大小是所有列的总和。文档:dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

标签: mysql max multiple-columns create-table


【解决方案1】:

descriptionskills_required 更改为text

您收到该消息是因为所有字段的 总和 > 65k

【讨论】:

  • 所以一行中的所有列以及单个列都有限制
猜你喜欢
  • 2014-05-03
  • 2015-07-13
  • 2017-10-11
  • 2015-01-14
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
相关资源
最近更新 更多