2016-11-23 2 views
0

Я пытаюсь импортировать таблицу SQL на стек LAMP-Digital Ocean в PhpMyAdmin, и я получаю эту ошибку:Как импортировать таблицу SQL с ~ 350 столбцами?

#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.

У меня есть только одна таблица, но она имеет ~ 350 столбцов. Я использую TINYTEXT для большинства столбцов, думая, что будет использовать меньше памяти, чем VARCHAR.

Когда я удаляю ~ 100 столбцов, импорт работает.

Есть ли ограничение на количество столбцов, которые я могу импортировать?

Или может быть в таблице только так много TINYTEXT и VARCHAR столбцов?

Почему эта ошибка возникает и как ее исправить? Есть ли параметр mySQL, который я могу установить или обновить в файле конфигурации mySQL? Это VPS, и у меня есть root-доступ, поэтому я могу что-то обновить, если потребуется.

Вот мой стол:

CREATE TABLE `rets_properties` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `acres` TINYTEXT, `addr` TINYTEXT DEFAULT NULL, `addl_mo_Fee` int(9) DEFAULT NULL, `all_inc` TINYTEXT, `area` TINYTEXT, `a_c` TINYTEXT, `yr_built` TINYTEXT, `sqft` TINYTEXT, `apt_num` TINYTEXT, `area_code` TINYTEXT, `tv` int(9) DEFAULT NULL, `ass_year` int(4) DEFAULT NULL, `bsmt1_out` TINYTEXT, `bsmt2_out` TINYTEXT, `br` int(1) DEFAULT NULL, `br_plus` int(1) DEFAULT NULL, `cable` TINYTEXT DEFAULT NULL, `cac_inc` TINYTEXT DEFAULT NULL, `central_vac` TINYTEXT DEFAULT NULL, `cert_lvl` TINYTEXT DEFAULT NULL, `comel_inc` TINYTEXT DEFAULT NULL, `community` TINYTEXT DEFAULT NULL, `community_code` TINYTEXT DEFAULT NULL, `dom` int(5) DEFAULT NULL, `cross_st` TINYTEXT DEFAULT NULL, `disp_addr` TINYTEXT, `drive` TINYTEXT DEFAULT NULL, `elevator` TINYTEXT DEFAULT NULL, `energy_cert` TINYTEXT, `constr1_out` TINYTEXT DEFAULT NULL, `constr2_out` TINYTEXT DEFAULT NULL, `extras` TINYTEXT DEFAULT NULL, `den_fr` TINYTEXT, `farm_agri` TINYTEXT DEFAULT NULL, `fpl_num` TINYTEXT DEFAULT NULL, `oh_date1` TINYTEXT DEFAULT NULL, `oh_from1` TINYTEXT DEFAULT NULL, `oh_to1` TINYTEXT DEFAULT NULL, `comp_pts` TINYTEXT, `furnished` TINYTEXT DEFAULT NULL, `gar_spaces` int(3) DEFAULT NULL, `gar_type` TINYTEXT DEFAULT NULL, `green_pis` TINYTEXT, `heat_inc` TINYTEXT, `fuel` TINYTEXT DEFAULT NULL, `heating` TINYTEXT DEFAULT NULL, `hydro_inc` TINYTEXT, `num_kit` int(1) DEFAULT NULL, `kit_plus` int(1) DEFAULT NULL, `laundry` TINYTEXT DEFAULT NULL, `laundry_lev` TINYTEXT DEFAULT NULL, `lease_term` TINYTEXT DEFAULT NULL, `legal_desc` TINYTEXT DEFAULT NULL, `level1` TINYTEXT DEFAULT NULL, `level10` TINYTEXT DEFAULT NULL, `level11` TINYTEXT DEFAULT NULL, `level12` TINYTEXT DEFAULT NULL, `level2` TINYTEXT DEFAULT NULL, `level3` TINYTEXT DEFAULT NULL, `level4` TINYTEXT DEFAULT NULL, `level5` TINYTEXT DEFAULT NULL, `level6` TINYTEXT DEFAULT NULL, `level7` TINYTEXT DEFAULT NULL, `level8` TINYTEXT DEFAULT NULL, `level9` TINYTEXT DEFAULT NULL, `rltr` TINYTEXT DEFAULT NULL, `lp_dol` int(11) DEFAULT NULL, `depth` int(6) DEFAULT NULL, `front_ft` int(8) DEFAULT NULL, `irreg` TINYTEXT DEFAULT NULL, `lotsz_code` TINYTEXT DEFAULT NULL, `mmap_page` int(3) DEFAULT NULL, `mmap_col` int(2) DEFAULT NULL, `mmap_row` TINYTEXT, `ml_num` TINYTEXT DEFAULT NULL, `municipality` TINYTEXT DEFAULT NULL, `municipality_district` TINYTEXT DEFAULT NULL, `municipality_code` TINYTEXT DEFAULT NULL, `oh_dt_stamp` TINYTEXT DEFAULT NULL, `orig_dol` int(11) DEFAULT NULL, `oth_struc1_out` TINYTEXT DEFAULT NULL, `oth_struc2_out` TINYTEXT DEFAULT NULL, `outof_area` TINYTEXT DEFAULT NULL, `park_chgs` int(6) DEFAULT NULL, `prkg_inc` TINYTEXT, `park_spcs` int(3) DEFAULT NULL, `pay_freq` TINYTEXT DEFAULT NULL, `handi_equipped` TINYTEXT, `parcel_id` TINYTEXT DEFAULT NULL, `pix_updt` date DEFAULT NULL, `pool` TINYTEXT DEFAULT NULL, `occ` TINYTEXT DEFAULT NULL, `zip` TINYTEXT DEFAULT NULL, `pvt_ent` TINYTEXT, `prop_feat1_out` TINYTEXT DEFAULT NULL, `prop_feat2_out` TINYTEXT DEFAULT NULL, `prop_feat3_out` TINYTEXT DEFAULT NULL, `prop_feat4_out` TINYTEXT DEFAULT NULL, `prop_feat5_out` TINYTEXT DEFAULT NULL, `prop_feat6_out` TINYTEXT DEFAULT NULL, `county` TINYTEXT DEFAULT NULL, `ad_text` TINYTEXT DEFAULT NULL, `retirement` TINYTEXT, `rm1_out` TINYTEXT DEFAULT NULL, `rm1_dc1_out` TINYTEXT DEFAULT NULL, `rm1_dc2_out` TINYTEXT DEFAULT NULL, `rm1_dc3_out` TINYTEXT DEFAULT NULL, `rm1_len` int(5) DEFAULT NULL, `rm1_wth` int(5) DEFAULT NULL, `rm10_out` TINYTEXT DEFAULT NULL, `rm10_dc1_out` TINYTEXT DEFAULT NULL, `rm10_dc2_out` TINYTEXT DEFAULT NULL, `rm10_dc3_out` TINYTEXT DEFAULT NULL, `rm10_len` int(5) DEFAULT NULL, `rm10_wth` int(5) DEFAULT NULL, `rm11_out` TINYTEXT DEFAULT NULL, `rm11_dc1_out` TINYTEXT DEFAULT NULL, `rm11_dc2_out` TINYTEXT DEFAULT NULL, `rm11_dc3_out` TINYTEXT DEFAULT NULL, `rm11_len` int(5) DEFAULT NULL, `rm11_wth` int(5) DEFAULT NULL, `rm12_out` TINYTEXT DEFAULT NULL, `rm12_dc1_out` TINYTEXT DEFAULT NULL, `rm12_dc2_out` TINYTEXT DEFAULT NULL, `rm12_dc3_out` TINYTEXT DEFAULT NULL, `rm12_len` int(5) DEFAULT NULL, `rm12_wth` int(5) DEFAULT NULL, `rm2_out` TINYTEXT DEFAULT NULL, `rm2_dc1_out` TINYTEXT DEFAULT NULL, `rm2_dc2_out` TINYTEXT DEFAULT NULL, `rm2_dc3_out` TINYTEXT DEFAULT NULL, `rm2_len` int(5) DEFAULT NULL, `rm2_wth` int(5) DEFAULT NULL, `rm3_out` TINYTEXT DEFAULT NULL, `rm3_dc1_out` TINYTEXT DEFAULT NULL, `rm3_dc2_out` TINYTEXT DEFAULT NULL, `rm3_dc3_out` TINYTEXT DEFAULT NULL, `rm3_len` int(5) DEFAULT NULL, `rm3_wth` int(5) DEFAULT NULL, `rm4_out` TINYTEXT DEFAULT NULL, `rm4_dc1_out` TINYTEXT DEFAULT NULL, `rm4_dc2_out` TINYTEXT DEFAULT NULL, `rm4_dc3_out` TINYTEXT DEFAULT NULL, `rm4_len` int(5) DEFAULT NULL, `rm4_wth` int(5) DEFAULT NULL, `rm5_out` TINYTEXT DEFAULT NULL, `rm5_dc1_out` TINYTEXT DEFAULT NULL, `rm5_dc2_out` TINYTEXT DEFAULT NULL, `rm5_dc3_out` TINYTEXT DEFAULT NULL, `rm5_len` int(5) DEFAULT NULL, `rm5_wth` int(5) DEFAULT NULL, `rm6_out` TINYTEXT DEFAULT NULL, `rm6_dc1_out` TINYTEXT DEFAULT NULL, `rm6_dc2_out` TINYTEXT DEFAULT NULL, `rm6_dc3_out` TINYTEXT DEFAULT NULL, `rm6_len` int(5) DEFAULT NULL, `rm6_wth` int(5) DEFAULT NULL, `rm7_out` TINYTEXT DEFAULT NULL, `rm7_dc1_out` TINYTEXT DEFAULT NULL, `rm7_dc2_out` TINYTEXT DEFAULT NULL, `rm7_dc3_out` TINYTEXT DEFAULT NULL, `rm7_len` int(5) DEFAULT NULL, `rm7_wth` int(5) DEFAULT NULL, `rm8_out` TINYTEXT DEFAULT NULL, `rm8_dc1_out` TINYTEXT DEFAULT NULL, `rm8_dc2_out` TINYTEXT DEFAULT NULL, `rm8_dc3_out` TINYTEXT DEFAULT NULL, `rm8_len` int(5) DEFAULT NULL, `rm8_wth` int(5) DEFAULT NULL, `rm9_out` TINYTEXT DEFAULT NULL, `rm9_dc1_out` TINYTEXT DEFAULT NULL, `rm9_dc2_out` TINYTEXT DEFAULT NULL, `rm9_dc3_out` TINYTEXT DEFAULT NULL, `rm9_len` int(5) DEFAULT NULL, `rm9_wth` int(5) DEFAULT NULL, `rm_srch` int(2) DEFAULT NULL, `rms` int(2) DEFAULT NULL, `rooms_plus` int(1) DEFAULT NULL, `s_r` TINYTEXT DEFAULT NULL, `oh_date2` TINYTEXT DEFAULT NULL, `oh_from2` TINYTEXT DEFAULT NULL, `oh_to2` TINYTEXT DEFAULT NULL, `vend_pis` TINYTEXT DEFAULT NULL, `sewer` TINYTEXT DEFAULT NULL, `spec_des1_out` TINYTEXT DEFAULT NULL, `spec_des2_out` TINYTEXT DEFAULT NULL, `spec_des3_out` TINYTEXT DEFAULT NULL, `spec_des4_out` TINYTEXT DEFAULT NULL, `spec_des5_out` TINYTEXT DEFAULT NULL, `spec_des6_out` TINYTEXT DEFAULT NULL, `status` TINYTEXT DEFAULT NULL, `st_num` TINYTEXT DEFAULT NULL, `st_sfx` TINYTEXT DEFAULT NULL, `st_dir` TINYTEXT, `st` TINYTEXT DEFAULT NULL, `style` TINYTEXT DEFAULT NULL, `yr` int(4) DEFAULT NULL, `taxes` int(8) DEFAULT NULL, `oh_date3` TINYTEXT DEFAULT NULL, `oh_from3` TINYTEXT DEFAULT NULL, `oh_to3` TINYTEXT DEFAULT NULL, `type_own_srch` TINYTEXT DEFAULT NULL, `type_own1_out` TINYTEXT DEFAULT NULL, `uffi` TINYTEXT DEFAULT NULL, `timestamp_sql` date DEFAULT NULL, `util_cable` TINYTEXT, `gas` TINYTEXT, `elec` TINYTEXT, `util_tel` TINYTEXT, `vtour_updt` date DEFAULT NULL, `tour_url` TINYTEXT DEFAULT NULL, `bath_tot` int(2) DEFAULT NULL, `wcloset_t1` int(1) DEFAULT NULL, `wcloset_p1` int(1) DEFAULT NULL, `wcloset_t1lvl` TINYTEXT DEFAULT NULL, `wcloset_t2` int(1) DEFAULT NULL, `wcloset_p2` int(1) DEFAULT NULL, `wcloset_t2lvl` TINYTEXT DEFAULT NULL, `wcloset_t3` int(1) DEFAULT NULL, `wcloset_p3` int(1) DEFAULT NULL, `wcloset_t3lvl` TINYTEXT DEFAULT NULL, `wcloset_t4` int(1) DEFAULT NULL, `wcloset_p4` int(1) DEFAULT NULL, `wcloset_t4lvl` TINYTEXT DEFAULT NULL, `wcloset_t5` int(1) DEFAULT NULL, `wcloset_p5` int(1) DEFAULT NULL, `wcloset_t5lvl` TINYTEXT DEFAULT NULL, `water` TINYTEXT DEFAULT NULL, `water_inc` TINYTEXT, `wtr_suptyp` TINYTEXT DEFAULT NULL, `waterfront` TINYTEXT DEFAULT NULL, `zoning` TINYTEXT DEFAULT NULL, `lse_terms` TINYTEXT DEFAULT NULL, `Idx_dt` date DEFAULT NULL, `lng` decimal(65,7) DEFAULT NULL, `lat` decimal(65,7) DEFAULT NULL, `num_images` int(2) DEFAULT NULL, `neighbourhood` TINYTEXT DEFAULT NULL, `share_perc` TINYTEXT DEFAULT NULL, `patio_ter` TINYTEXT DEFAULT NULL, `bldg_amen1_out` TINYTEXT DEFAULT NULL, `bldg_amen2_out` TINYTEXT DEFAULT NULL, `bldg_amen3_out` TINYTEXT DEFAULT NULL, `bldg_amen4_out` TINYTEXT DEFAULT NULL, `bldg_amen5_out` TINYTEXT DEFAULT NULL, `bldg_amen6_out` TINYTEXT DEFAULT NULL, `insur_bldg` TINYTEXT DEFAULT NULL, `corp_num` TINYTEXT DEFAULT NULL, `condo_corp` TINYTEXT DEFAULT NULL, `cond_txinc` TINYTEXT DEFAULT NULL, `ens_lndry` TINYTEXT DEFAULT NULL, `condo_exp` TINYTEXT DEFAULT NULL, `gar` TINYTEXT DEFAULT NULL, `stories` TINYTEXT DEFAULT NULL, `locker` TINYTEXT DEFAULT NULL, `locker_num` TINYTEXT DEFAULT NULL, `maint` TINYTEXT DEFAULT NULL, `park_lgl_desc1` TINYTEXT DEFAULT NULL, `park_lgl_desc2` TINYTEXT DEFAULT NULL, `park_spc1` TINYTEXT DEFAULT NULL, `park_spc2` TINYTEXT DEFAULT NULL, `park_desig` TINYTEXT DEFAULT NULL, `park_desig_2` TINYTEXT DEFAULT NULL, `park_fac` TINYTEXT DEFAULT NULL, `pets` TINYTEXT DEFAULT NULL, `prop_mgmt` TINYTEXT DEFAULT NULL, `unit_num` int(100) DEFAULT NULL, `treb_class` TINYTEXT DEFAULT NULL, `amps` TINYTEXT, `area_infl1_out` TINYTEXT, `area_infl2_out` TINYTEXT, `perc_bldg` TINYTEXT, `bay_size2` TINYTEXT, `bay_size2_in` TINYTEXT, `bay_size1` TINYTEXT, `bay_size1_in` TINYTEXT, `dba` TINYTEXT, `prop_type` TINYTEXT, `chattels` TINYTEXT, `ceil_ht` TINYTEXT, `ceil_ht_in` TINYTEXT, `com_cn_fee` TINYTEXT, `com_chgs` TINYTEXT, `crane` TINYTEXT, `days_open` TINYTEXT, `trlr_pk_spt` TINYTEXT, `shpdrsdmnu` TINYTEXT, `shpdrsdmhtft` TINYTEXT, `shpdrsdmhtin` TINYTEXT, `shpdrsdmwdft` TINYTEXT, `shpdrsdmwdin` TINYTEXT, `shpdrsdlnu` TINYTEXT, `shpdrsdlhtft` TINYTEXT, `shpdrsdlhtin` TINYTEXT, `shpdrsdlwdft` TINYTEXT, `shpdrsdlwdin` TINYTEXT, `employees` TINYTEXT, `inventory` TINYTEXT, `exp_actest` TINYTEXT, `fin_stmnt` TINYTEXT, `franchise` TINYTEXT, `freestandg` TINYTEXT, `shpdrsglnu` TINYTEXT, `shpdrsglhtft` TINYTEXT, `shpdrsglhtin` TINYTEXT, `shpdrsglwdft` TINYTEXT, `shpdrsglwdin` TINYTEXT, `gross_inc` TINYTEXT, `heat_exp` TINYTEXT, `hours_open` TINYTEXT, `hydro_exp` TINYTEXT, `ind_area` TINYTEXT, `ind_areacd` TINYTEXT, `insur` TINYTEXT, `lp_code` TINYTEXT, `llbo` TINYTEXT, `lot_code` TINYTEXT, `mgmt` TINYTEXT, `terms` TINYTEXT, `minrenttrm` TINYTEXT, `net_inc` TINYTEXT, `oa_area` TINYTEXT, `off_areacd` TINYTEXT, `oper_exp` TINYTEXT, `orig_lp_code` TINYTEXT, `other` TINYTEXT, `out_storg` TINYTEXT, `perc_rent` TINYTEXT, `rail` TINYTEXT, `retail_a` TINYTEXT, `retail_ac` TINYTEXT, `seats` TINYTEXT, `soil_test` TINYTEXT, `sprinklers` TINYTEXT, `survey` TINYTEXT, `taxes_exp` TINYTEXT, `tot_area` TINYTEXT, `tot_areacd` TINYTEXT, `shpdrstlnu` TINYTEXT, `shpdrstlhtft` TINYTEXT, `shpdrstlhtin` TINYTEXT, `shpdrstlwdft` TINYTEXT, `shpdrstlwdin` TINYTEXT, `type_taxes` TINYTEXT, `bus_type` TINYTEXT, `utilities` TINYTEXT, `vac_perc` TINYTEXT, `volts` TINYTEXT, `water_exp` TINYTEXT, `yr_exp` TINYTEXT, `occupancy` TINYTEXT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

+0

остановить все и прочитать: https://en.wikipedia.org/wiki/Database_normalization – e4c5

+0

@ e4c5 Есть на самом деле не какие-либо отношения. Каждая строка является недвижимым имуществом, и каждое свойство имеет 163 атрибута.Я мог бы разделить атрибуты на категории в отдельных таблицах, но это потребует значительного изменения моего приложения, чего я не могу себе позволить. –

+0

Я бы сказал, что у вас неправильная структура. – e4c5

ответ

0

С 163 colums я рекомендую думать о новой структуре. Но на данный момент может помочь ROWFORMAT = COMPRESSED.

ALTER TABLE tablename 
ENGINE=InnoDB 
ROW_FORMAT=COMPRESSED; 

Или, как вы говорите о файле конфигурации: Вы можете переключиться на InnoDB Barracuda вместо.

В my.cnf:

innodb_file_per_table  
innodb_file_format = Barracuda 
+0

Я действительно видел это в другом потоке и пробовал это. Я обновил 'innodb_file_per_table' и' innodb_file_format' в 'my.cnf', но это не сработало. Вы предлагаете изменить исходную таблицу или новую, к которой я пытаюсь импортировать? Должен ли я создать новую таблицу, изменить ее и затем импортировать? –

+0

Вы можете попытаться добавить ROW_FORMAT = COMPRESSED в оператор CREATE. – Steffen

0
  1. Update innodb_file_per_table=1 и innodb_file_format=Barracuda в вашей конфигурации MySQL.
  2. Но изменение конфигурационного файла не вступает в силу на вашем запущенный экземпляре, так что вы должны либо перезагрузить туздА, либо изменить переменные в запущенном экземпляре:

    SET GLOBAL innodb_file_per_table=1; 
    SET GLOBAL innodb_file_format=Barracuda; 
    
  3. Перестроить таблицу в настоящее время что вы можете использовать Barracuda.

    ALTER TABLE MyTableWith163Columns ROW_FORMAT=DYNAMIC; 
    
  4. Убедитесь, что изменения вступили в силу:

    SHOW CREATE TABLE MyTableWith163Columns; 
    

ДИНАМИЧЕСКИЙ формат строки, вероятно, достаточно, чтобы позволить вам вставить свои данные. COMPRESSED не требуется. Оба формата DYNAMIC и COMPRESSED изменяют способ хранения столбцов блога/текста, когда строка становится слишком большой, и в основном позволяет больше столбцов в строке.

Подробности читайте https://www.percona.com/blog/2010/02/09/blob-storage-in-innodb/

+0

Спасибо, Билл. Я попробовал обновить конфигурацию с этими настройками, но не повезло. Я также понял, что у меня на самом деле ~ 350 столбцов (у другой таблицы 163). Локально с помощью MAMP я могу импортировать файл примерно через 10 секунд, и я не получаю ошибку. Кажется, что бы я ни делал, я всегда ударил 8Kib и получил эту ошибку. Я обновил свой вопрос с помощью инструкции 'CREATE' для справки. –

+0

@MichaelLynch, вы читали блог, к которому я привязывался? –

Смежные вопросы