Open lgromb opened 1 week ago
Après vérification, la colonne existe déjà :
sqlite> PRAGMA table_info(m_applications);
0|id|INTEGER|1||1
1|name|varchar(255)|1||0
2|description|clob|0|NULL|0
3|security_need_c|INTEGER|0|NULL|0
4|responsible|varchar(255)|0|NULL|0
5|type|varchar(255)|0|NULL|0
6|technology|varchar(255)|0|NULL|0
7|external|varchar(255)|0|NULL|0
8|users|varchar(255)|0|NULL|0
9|created_at|datetime|0|NULL|0
10|updated_at|datetime|0|NULL|0
11|deleted_at|datetime|0|NULL|0
12|entity_resp_id|INTEGER|0|NULL|0
13|application_block_id|INTEGER|0|NULL|0
14|documentation|varchar(255)|0|NULL|0
15|security_need_i|INTEGER|0|NULL|0
16|security_need_a|INTEGER|0|NULL|0
17|security_need_t|INTEGER|0|NULL|0
18|version|varchar(255)|0|NULL|0
19|functional_referent|varchar(255)|0|NULL|0
20|editor|varchar(255)|0|NULL|0
21|install_date|datetime|0|NULL|0
22|update_date|datetime|0|NULL|0
23|rto|INTEGER|0|NULL|0
24|rpo|INTEGER|0|NULL|0
25|vendor|varchar(255)|0|NULL|0
26|product|varchar(255)|0|NULL|0
27|attributes|varchar(255)|0|NULL|0
28|patching_frequency|INTEGER|0|NULL|0
29|next_update|date|0|NULL|0
30|icon|TEXT|0||0
31|icon_id|INTEGER|0||0
Est-ce qu'il suffit juste de la supprimer ?
Merci,
Il semble que cette migration ait déjà été exécutée, mais elle n'est pas notée dans la table migrations
. Le plus simple est de mettre le code de la méthode up
qui se trouve dans database/migrations/2024_09_24_044657_move_icons_to_docs.php
en commentaire et de relancer la migration de la db avec la commande php artisan migrate
jusqu'à stabilisation.
J'ai fait, la migration est passée et il semble avoir un pb similaire sur la suivante :
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator INFO Running migrations.
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator 2024_09_24_084005_move_icons_to_docs .......................... 11.60ms FAIL
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator Illuminate\Database\QueryException
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator SQLSTATE[HY000]: General error: 1 error in index entity_id_fk_1295034 after drop column: no such column: entity_id (Connection: sqlite, SQL: alter table "workstations" drop column "icon")
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator at vendor/laravel/framework/src/Illuminate/Database/Connection.php:825
mercator-6b585f5948-94j6b:mercator 821▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
mercator-6b585f5948-94j6b:mercator 822▕ );
mercator-6b585f5948-94j6b:mercator 823▕ }
mercator-6b585f5948-94j6b:mercator 824▕
mercator-6b585f5948-94j6b:mercator ➜ 825▕ throw new QueryException(
mercator-6b585f5948-94j6b:mercator 826▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
mercator-6b585f5948-94j6b:mercator 827▕ );
mercator-6b585f5948-94j6b:mercator 828▕ }
mercator-6b585f5948-94j6b:mercator 829▕ }
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator +9 vendor frames
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator 10 database/migrations/2024_09_24_084005_move_icons_to_docs.php:14
mercator-6b585f5948-94j6b:mercator Illuminate\Support\Facades\Facade::__callStatic("table")
mercator-6b585f5948-94j6b:mercator +25 vendor frames
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator 36 artisan:35
mercator-6b585f5948-94j6b:mercator Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
mercator-6b585f5948-94j6b:mercator
mercator-6b585f5948-94j6b:mercator 2024-11-20 13:47:40,106 WARN exited: migrate (exit status 0; not expected)
mercator-6b585f5948-94j6b:mercator 2024-11-20 13:47:41,108 INFO gave up: migrate entered FATAL state, too many start retries too quickly
mercator-6b585f5948-94j6b:mercator 2024-11-20 13:47:41,109 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
mercator-6b585f5948-94j6b:mercator 2024-11-20 13:47:41,109 INFO success: php entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
et les colonnes associées de workstations :
sqlite> PRAGMA table_info(workstations);
0|id|INTEGER|1||1
1|name|varchar|1||0
2|description|TEXT|0||0
3|created_at|datetime|0||0
4|updated_at|datetime|0||0
5|deleted_at|datetime|0||0
6|site_id|INTEGER|0||0
7|building_id|INTEGER|0||0
8|physical_switch_id|INTEGER|0||0
9|type|varchar|0||0
10|operating_system|varchar|0||0
11|address_ip|varchar|0||0
12|cpu|varchar|0||0
13|memory|varchar|0||0
14|disk|INTEGER|0||0
15|vendor|varchar|0||0
16|product|varchar|0||0
17|version|varchar|0||0
18|icon|TEXT|0||0
Relancer la migration de la db avec la commande php artisan migrate
et recommencer la mise en commentaire jusqu'à stabilisation.
Ok @dbarzin mais la je comprends (moi qui ne suis pas développeur), qu'il manque quelque chose lorsque j'essaie de créer une entité. Commenter l'ensemble des migrations fera effectivement passer l'erreur du migrate, mais cela ne va pas pour autant modifier la structure des données comme l'attend l'application ?
Ma question d'origine reste valable à savoir :
Comment fix ce problème qui s'affiche lorsque je clique sur "Ajouter Entité" dans Ecosystème :
Toutes les migrations ont-elles été exécutées ? Ce champ icon_id
se trouve dans une migration qui n'a pas été exécutée.
Je soupçonne que tu as restauré la DB d'une version n de l'application sur une version n+x d'une autre version de l'application sans les modifications de table. Au lancement, l'application croit que la base de données n'a pas été migrée, car la liste des migrations effectuées se trouve dans la table migration et essaye de les exécuter, mais sans succès parce qu'elles ont déjà été exécutées sur cette base de données. Lors du backup de la base de données de Mercator, il faut inclure les créations de tables pour que la nouvelle version de l'application puisse migrer le schéma de base de données.
Hello,
Tout ce qui semble faire appel à icon_id tombe en 500, probablement du à cette migration en échec au start du docker :
La base est en sqlite, une idée de comment réparer ça ?
Merci,