Suite à une alerte de sécurité Drupal (PSA-2014-001), j'ai procédé à la mise à jour du module Media 7.1.x, et de File_entity, qui est compris dans ce module.
Problème en retournant sur les pages, une belle erreur :
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mysite.image_dimensions' doesn't exist: SELECT * FROM {image_dimensions} id WHERE id.fid IN (:fids_0); Array ( [:fids_0] => 75 ) in file_entity_file_load() (line 225 of /home/mysite/domains/mysite.be/public_html/dev/sites/all/modules/media/file_entity/file_entity.module).
Identification du problème
Lorsqu'on vérifie dans la base de données, la table n'existe pas dans le schéma. Elle est pourtant créée dans le fichier .install de la nouvelle version de file_entity, qui fait partie du module Media 7.1.x. Dans l'update du module, elle porte la version 7101. On peut alors vérifier dans la base quel est le numéro de schéma référencé par Drupal. Par exemple avec une connexion MySQL ou MariaDB :
select name, type, schema_version from system where name = 'file_entity';
+-------------+--------+----------------+
| name | type | schema_version |
+-------------+--------+----------------+
| file_entity | module | 7215 |
+-------------+--------+----------------+
1 row in set (0.00 sec)
Dans le fichier file_entity.install, on trouve :
function file_entity_update_7101()
{
...
}
Ce qui correspond à une version 7101, inférieure à celle en base. Dans ce cas, le lancement de update.php ne va rien déclencher.
Solution
Forcer la version dans la table à une numéro inférieur à celui de l'update :
update system set schema_version = '7100' where name = 'file_entity';
On relance ensuite update.php et la table est alors créée.
Retour sur la cause du problème
Dans mon cas, la cause primaire était une première installation de Media 7.1 avec le module File Entity téléchargé séparément sur le site Drupal, qui est en version 7.2. En effet, dans la version Media 7.2, le module File entity n'est plus inclus.
Ce souci n'apparaît donc que dans un cas bien particulier : installation de Media 7.1 avec File_entity 7.2,(ce qui de toute manière pose des problèmes), puis désinstallation de file_entity 7.2, suppression du module, pour pouvoir utiliser le module inclus dans Media 7.1.