[genropy] Re: import DB MySQL.

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Wed, 5 Oct 2016 10:38:23 +0200


Il giorno 05 ott 2016, alle ore 08:57, Giovanni Porcari 
<giovanni.porcari@xxxxxxxxx> ha scritto:


Il giorno 05 ott 2016, alle ore 07:12, Gollum1 <gollum1.smeagol1@xxxxxxxxx> 
ha scritto:

mentre sul terminale mi appare il seguente messaggio:

unrecognized column type: mediumint


ho provato a fare la stessa cosa su tutte le tabelle, ed ho segnato
per l'importazione solo quelle che non mi hanno dato questo errore...
ed in effetti con queste l'importazione è riuscita…


Purtroppo i tipi nei vari DB sono molto fantasiosi.

Se vai nell'adapter di mysql (gnr/gnrpy/sql/adapters/gnrmysql.py) troverai :

class SqlDbAdapter(SqlDbBaseAdapter):
   typesDict = {'varchar': 'A', 'char': 'C', 'text': 'T', 'tinytext': 'T', 
'mediumtext': 'T', 'longtext': 'T',
                'enum': 'A',
                'boolean': 'B', 'date': 'D', 'time': 'H', 'datetime': 'DH', 
'tinyint': 'I', 'timestamp': 'DH',
                'integer': 'I', 'bigint': 'L', 'smallint': 'I', 'int': 'I', 
'double precision': 'R', 'real': 'R',
                'bytea': 'O', 'decimal':'N', 'longblob':'O', 'float':'R', 
'blob':'O', 'varbinary':'O'}

   revTypesDict = {'A': 'varchar', 'T': 'text', 'C': 'char',
                   'X': 'text', 'P': 'text', 'Z': 'text',
                   'B': 'boolean', 'D': 'date', 'H': 'time', 'DH': 'datetime',
                   'I': 'int', 'L': 'bigint', 'R': 'real','N':'decimal',
                   'serial': 'serial8', 'O': 'bytea'}

In pratica questi dizionari governano come vengono mappati i tipi.

Noi non gestiamo i mediumint e quindi si pianta.

Se vuoi aggiustarlo tu basta che modifichi typesDict aggiungendo : 
'mediumint':'L'

   typesDict = {'varchar': 'A', 'char': 'C', 'text': 'T', 'tinytext': 'T', 
'mediumtext': 'T', 'longtext': 'T',
                'enum': 'A',
                'boolean': 'B', 'date': 'D', 'time': 'H', 'datetime': 'DH', 
'tinyint': 'I', 'timestamp': 'DH',
                'integer': 'I', 'bigint': 'L', 'smallint': 
'I','mediumint':'L', 'int': 'I', 'double precision': 'R', 'real': 'R',
                'bytea': 'O', 'decimal':'N', 'longblob':'O', 'float':'R', 
'blob':'O', 'varbinary':'O'}


Poi lo faremo noi ma se intanto vuoi provare…




Fatto come hotfix e quindi per gli amanti di mysql e dei fantastici mediumint 
il problema dovrebbe essere risolto :D

G




Other related posts: