• User Newbie

    Migrazione da db con MySQL: 4.0.30 a db con MySQL: 5.0.92 oppure Mysql 5.5.27

    Mi sono bloccato con un probleimino: :arrabbiato:
    Devo spostare un database con MySQL: 4.0.30 (da ora vecchio Db) ad uno con MySQL: 5.0.92 (da ora nuovo Db), non nomino il sistema “forum” da me utilizzato, non so se violerei il regolamento, ho provato in vari modi, il db (non compresso) su piattaforma MySQL: 4.0.30 è di 140Mb, l'ho salvato in 3 parti e ripristino i 3 pezzi del database (utilizzando Modalitá di compatibilità SQL: mysql40) ma mi risulta su MySQL: 5.0.92 di ben 160 Mb, a prima vista de punto il forum sul nuovo database sembra ok ma se provo ad effettuare una risposta in un post mi viene fuori l'errore:

    SQL ERROR [ mysql4 ]
    
    Field 'post_edit_reason' doesn't have a default value [1364]
    
    SQL
    
    INSERT  INTO phpbb_posts (forum_id, poster_id, icon_id, poster_ip, post_time,  post_approved, enable_bbcode, enable_smilies, enable_magic_url,  enable_sig, post_username, post_subject, post_text, post_checksum,  post_attachment, bbcode_bitfield, bbcode_uid, post_postcount,  post_edit_locked, topic_id) VALUES (16, 76, 0, '87.19.32.203',  1349992465, 1, 1, 1, 1, 1, '', 'Re: Attivazione account e futuro',  'prova', '189bbbb00c5f1fb7fba9ad9285f193d1', 0, '', 'rl0160zy', 1, 0,  3857)
    
    BACKTRACE
    
    FILE: (not given by php)
    LINE: (not given by php)
    CALL: msg_handler()
    
    FILE: [ROOT]/includes/db/dbal.php
    LINE: 757
    CALL: trigger_error()
    
    FILE: [ROOT]/includes/db/mysql.php
    LINE: 175
    CALL: dbal->sql_error()
    
    FILE: [ROOT]/includes/functions_posting.php
    LINE: 2000
    CALL: dbal_mysql->sql_query()
    
    FILE: [ROOT]/posting.php
    LINE: 1134
    CALL: submit_post()
    

    Appurato che il problema è nella tabella post alla colonna 'post_edit_reason' l’ho analizzata sia in versione vecchio Db che nuovo Db ed ho notato che nel vecchio la colonna e vuota nel nuovo viene riportato il valore **[BLOB - OB] **per cui riporto la struttura della tabelle in questione:

    
    CREATE TABLE IF NOT EXISTS `FORUM_posts` (
      `post_id` mediumint(8) unsigned NOT NULL auto_increment,
      `topic_id` mediumint(8) unsigned NOT NULL default '0',
      `forum_id` mediumint(8) unsigned NOT NULL default '0',
      `poster_id` mediumint(8) unsigned NOT NULL default '0',
      `icon_id` mediumint(8) unsigned NOT NULL default '0',
      `poster_ip` varchar(40) binary NOT NULL default '',
      `post_time` int(11) unsigned NOT NULL default '0',
      `post_approved` tinyint(1) unsigned NOT NULL default '1',
      `post_reported` tinyint(1) unsigned NOT NULL default '0',
      `enable_bbcode` tinyint(1) unsigned NOT NULL default '1',
      `enable_smilies` tinyint(1) unsigned NOT NULL default '1',
      `enable_magic_url` tinyint(1) unsigned NOT NULL default '1',
      `enable_sig` tinyint(1) unsigned NOT NULL default '1',
      **`post_username` blob NOT NULL,**
      `post_subject` text NOT NULL,
      `post_text` mediumtext NOT NULL,
      `post_checksum` varchar(32) binary NOT NULL default '',
      `post_attachment` tinyint(1) unsigned NOT NULL default '0',
      `bbcode_bitfield` varchar(255) binary NOT NULL default '',
      `bbcode_uid` varchar(8) binary NOT NULL default '',
      `post_postcount` tinyint(1) unsigned NOT NULL default '1',
      `post_edit_time` int(11) unsigned NOT NULL default '0',
    **  `post_edit_reason` blob NOT NULL,**
      `post_edit_user` mediumint(8) unsigned NOT NULL default '0',
      `post_edit_count` smallint(4) unsigned NOT NULL default '0',
      `post_edit_locked` tinyint(1) unsigned NOT NULL default '0',
    

    Ho rimarcato 2 campi che, nel vecchio Db sono colonne o vuote o ricoperte da, la prima l'userneme del "postante" la seconda vuota.
    Quando ripristino il database sul nuovo Db, questi due colonne prendono il valore [BLOB - OB] ecco perché l'erore di sintassi sbagliata.

    Ho provato ad aggiungere alle due righe da:

    post_username blob NOT NULL,
    post_edit_reason blob NOT NULL,

    A:

    post_username blob NOT NULL, default ''
    post_edit_reason blob NOT NULL, default ''

    Ma nulla mi riporta [BLOB - OB] e non l'eventuale spazio vuoto.

    Il discorso non è solo risolvere il problema in questa tabella che presenta due colonne con il "problema" ma bensì non vorrei che anche in altre tabelle sia presente l'errore per cui penso che dovrei prima convertire il Db da Mysql 4 a Mysql 5 per "garantirmi" il non errore, ma in merito non ho trovato ne Software ne altro....

    Poi, se imparo, dovrò passare in seguito a Mysql 5.5.27-28.1-log.lo anticipo perché magari mi dite che è più semplice passare da MySQL: 4.0.30 a Mysql 5.5.27-28.1-log, in tal caso devo prendere altri 100mb e potrei utilizzare questa variante più aggiornata.

    RingraziandoVi per l'attenzione, chiedo....
    Consigli?