2016-11-23 2 views
0

Je suis en train d'importer une table SQL sur une pile LAMP Digital Ocean dans phpMyAdmin et je reçois cette erreur:Comment puis-je importer une table SQL qui contient ~ 350 colonnes?

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

Je n'ai qu'une seule table mais il a ~ 350 colonnes. J'utilise TINYTEXT pour la plupart des colonnes, pensant qu'il utilisera moins de mémoire que VARCHAR.

Lorsque je supprime ~ 100 colonnes, l'importation fonctionne.

Y a-t-il une limite au nombre de colonnes que je peux importer?

Ou une table peut-elle contenir autant de colonnes TINYTEXT et VARCHAR?

Pourquoi cette erreur est-elle levée et comment puis-je la réparer? Existe-t-il un paramètre mySQL que je peux définir ou mettre à jour dans le fichier de configuration mySQL? C'est un VPS et j'ai un accès root, donc je peux mettre à jour quelque chose si besoin.

Voici ma table:

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

tout arrêter et de lire ceci: https://en.wikipedia.org/wiki/Database_normalization – e4c5

+0

@ e4c5 Il n'y a pas vraiment de relations. Chaque rangée est une propriété immobilière et chaque propriété a 163 attributs.Je pourrais diviser les attributs en catégories dans des tableaux séparés, mais cela nécessiterait de modifier de manière significative mon application, que je ne peux pas me permettre. –

+0

Je dirais toujours que vous avez mal la structure. – e4c5

Répondre

0

Avec 163 colums je recommande de penser à une nouvelle structure. Mais pour le moment ROWFORMAT = COMPRESSED pourrait aider.

ALTER TABLE tablename 
ENGINE=InnoDB 
ROW_FORMAT=COMPRESSED; 

Ou que vous parlez du fichier de configuration: Vous pouvez passer à InnoDB Barracuda à la place.

En my.cnf:

innodb_file_per_table  
innodb_file_format = Barracuda 
+0

J'ai effectivement vu cela dans un autre fil et essayé cela. J'ai mis à jour le 'innodb_file_per_table' et' innodb_file_format' dans 'my.cnf' mais cela n'a pas fonctionné. Est-ce que vous suggérez de modifier la table originale ou la nouvelle que j'essaie d'importer? Devrais-je créer la nouvelle table, la modifier, puis l'importer? –

+0

Vous pouvez essayer d'ajouter ROW_FORMAT = COMPRESSED à votre instruction CREATE. – Steffen

0
  1. Mise à jour innodb_file_per_table=1 et innodb_file_format=Barracuda dans votre configuration MySQL.
  2. Mais changer le fichier de configuration ne prend pas effet sur votre instance en cours d'exécution, de sorte que vous devez soit redémarrer mysqld, ou bien modifier les variables dans l'instance en cours d'exécution:

    SET GLOBAL innodb_file_per_table=1; 
    SET GLOBAL innodb_file_format=Barracuda; 
    
  3. Reconstruire la table maintenant que vous pouvez utiliser Barracuda.

    ALTER TABLE MyTableWith163Columns ROW_FORMAT=DYNAMIC; 
    
  4. Vérifiez que le changement a pris effet:

    SHOW CREATE TABLE MyTableWith163Columns; 
    

Le format de ligne dynamique est probablement suffisante pour vous permettre d'insérer vos données. COMPRESSED n'est pas nécessaire. Les formats de ligne DYNAMIC et COMPRESSED modifient la façon dont les colonnes de blog/texte sont stockées lorsque la ligne devient trop grande, et permettent en principe plus de colonnes par ligne.

Pour plus de détails lire https://www.percona.com/blog/2010/02/09/blob-storage-in-innodb/

+0

Merci Bill. J'ai essayé de mettre à jour la configuration avec ces paramètres mais pas de chance. J'ai également réalisé que j'avais réellement ~ 350 colonnes (une table différente a 163). Localement en utilisant MAMP je peux importer le fichier en environ 10 secondes et je ne reçois pas l'erreur. Il semble que peu importe ce que je fais, je frappe toujours 8Kib et reçois cette erreur. J'ai mis à jour ma question avec ma déclaration 'CREATE' pour référence. –

+0

@MichaelLynch, avez-vous lu le blog auquel je me suis connecté? –