Durante l’installazione del sound language italiano in FreePBX 16 su Asterisk 19, mi sono imbattuto nel seguente errore:
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column ‘filename’ at row 1
File:/var/www/html/admin/modules/soundlang/Soundlang.class.php:1124
Questo è un bug noto e qui censito: https://issues.freepbx.org/browse/FREEPBX-20981
Non essendo ancora stato risolto, si può applicare una patch seguendo i passaggi illustrati qui di seguito.
Come risolvere l'errore "Data too long for column 'filename' at row 1"
La risoluzione dell’errore si raggiunge incrementando la lunghezza massima consentita del campo filename
della tabella soundlang_prompts
appartenente al database asterisk
.
Come prima cosa accediamo a mysql.
sudo mysql
Lanciando una query per verificare il nome del database
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| asterisk |
| asteriskcdrdb |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
Selezioniamo il database <code>asterisk</code>
MariaDB [(none)]> USE asterisk;
Database changed
Visualizziamo le tabelle contenute nel database
MariaDB [asterisk]> SHOW TABLES;
+-----------------------------------------+
| Tables_in_asterisk |
+-----------------------------------------+
| admin |
| ampusers |
| announcement |
| arimanager |
| callrecording |
| callrecording_module |
| certman_cas |
| certman_certs |
| certman_csrs |
| certman_mapping |
| cidlookup |
| cidlookup_incoming |
| contactmanager_entry_emails |
| contactmanager_entry_images |
| contactmanager_entry_numbers |
| contactmanager_entry_speeddials |
| contactmanager_entry_userman_images |
| contactmanager_entry_websites |
| contactmanager_entry_xmpps |
| contactmanager_general_favorites |
| contactmanager_group_entries |
| contactmanager_groups |
| contactmanager_user_favorites |
| cron_jobs |
| cronmanager |
| custom_extensions |
| dahdi |
| dahdichandids |
| daynight |
| devices |
| emergencydevices |
| featurecodes |
| findmefollow |
| freepbx_log |
| freepbx_settings |
| globals |
| iax |
| incoming |
| indications_zonelist |
| ivr_details |
| ivr_entries |
| kvblobstore |
| kvstore_Dashboard |
| kvstore_FreePBX |
| kvstore_FreePBX_Framework |
| kvstore_FreePBX_Hooks |
| kvstore_FreePBX_Media |
| kvstore_FreePBX_modules_Backup |
| kvstore_FreePBX_modules_Calendar |
| kvstore_FreePBX_modules_Conferences |
| kvstore_FreePBX_modules_Contactmanager |
| kvstore_FreePBX_modules_Core |
| kvstore_FreePBX_modules_Customappsreg |
| kvstore_FreePBX_modules_Filestore |
| kvstore_FreePBX_modules_Printextensions |
| kvstore_FreePBX_modules_Userman |
| kvstore_FreePBX_modules_Voicemail |
| kvstore_OOBE |
| kvstore_Sipsettings |
| logfile_logfiles |
| logfile_settings |
| manager |
| meetme |
| module_xml |
| modules |
| music |
| notifications |
| outbound_route_email |
| outbound_route_patterns |
| outbound_route_sequence |
| outbound_route_trunks |
| outbound_routes |
| parkplus |
| pjsip |
| queues_config |
| queues_details |
| recordings |
| ringgroups |
| setcid |
| sip |
| sipsettings |
| soundlang_customlangs |
| soundlang_packages |
| soundlang_prompts |
| soundlang_settings |
| sysadmin_fail2ban |
| sysadmin_options |
| sysadmin_update_log |
| timeconditions |
| timegroups_details |
| timegroups_groups |
| trunk_dialpatterns |
| trunks |
| ucp_sessions |
| userman_directories |
| userman_groups |
| userman_groups_settings |
| userman_template_settings |
| userman_ucp_templates |
| userman_users |
| userman_users_settings |
| users |
| voicemail_admin |
+-----------------------------------------+
soundlang_prompts
MariaDB [asterisk]> DESCRIBE soundlang_prompts;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| type | varchar(20) | NO | | NULL | |
| module | varchar(80) | NO | | NULL | |
| language | varchar(20) | NO | | NULL | |
| format | varchar(20) | NO | | NULL | |
| filename | varchar(80) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
filename
impostandolo a 255
MariaDB [asterisk]> ALTER TABLE soundlang_prompts MODIFY filename VARCHAR(255);
Query OK, 0 rows affected (0.019 sec)
Records: 0 Duplicates: 0 Warnings: 0
soundlang_prompts
verificando che il campo è ora un VARCHAR(255)
MariaDB [asterisk]> DESCRIBE soundlang_prompts;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| type | varchar(20) | NO | | NULL | |
| module | varchar(80) | NO | | NULL | |
| language | varchar(20) | NO | | NULL | |
| format | varchar(20) | NO | | NULL | |
| filename | varchar(255) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
Ora lanciando di nuovo l’installazione della lingua italiana dal menu Admin -> Sound Languages il processo verrà eseguito completandosi con successo.
3 risposte
Buongiorno, ho usato questo accorgimento qualche mese fa ma in occasione, mi pare, dell’ultimo aggiornamento del modulo soundlang (16.0.9), l’errore di mysql 1406 ritorna e blocca interamente freepbx. Avete suggerimenti?
Credo di essere riuscito a sistemare la situazione modificando il file /var/www/html/admin/modules/soundlang/module.xml alla riga 68 che contiene lo statement “” sostituendo il valore “80” con “255”.
Per quanto l’errore sia differente da quello che menziono in quest’altro articolo https://alessandromasciadri.com/come-aggiornare-il-modulo-sound-languages-di-freepbx/ può essere uno spunto valido per impostare una procedura per mantenere il modulo Sound Languages aggiornato.