diff --git a/sql/diagnostic_final_production.sql b/sql/diagnostic_final_production.sql new file mode 100644 index 0000000..74afff4 --- /dev/null +++ b/sql/diagnostic_final_production.sql @@ -0,0 +1,66 @@ +-- 🔍 DIAGNOSTIC COMPLET FINAL - Production +-- Trouvons exactement où ça bloque ! + +-- SECTION 1: Vérification des tables et leurs structures +SELECT 'TABLES EXISTANTES' as check_type; +SELECT table_name, + (SELECT COUNT(*) FROM information_schema.columns WHERE table_name = t.table_name) as column_count +FROM information_schema.tables t +WHERE table_schema = 'public' +AND table_name IN ('suppliers', 'groups', 'users', 'avoirs') +ORDER BY table_name; + +-- SECTION 2: Structure détaillée de la table avoirs +SELECT 'STRUCTURE TABLE AVOIRS' as check_type; +SELECT column_name, data_type, is_nullable, column_default +FROM information_schema.columns +WHERE table_name = 'avoirs' +ORDER BY ordinal_position; + +-- SECTION 3: Contraintes de la table avoirs +SELECT 'CONTRAINTES AVOIRS' as check_type; +SELECT conname as constraint_name, + confrelid::regclass as referenced_table, + contype as constraint_type +FROM pg_constraint +WHERE conrelid = 'avoirs'::regclass; + +-- SECTION 4: Données dans les tables liées +SELECT 'DONNÉES TABLES LIÉES' as check_type; +SELECT 'suppliers' as table_name, COUNT(*) as count FROM suppliers +UNION ALL +SELECT 'groups', COUNT(*) FROM groups +UNION ALL +SELECT 'users', COUNT(*) FROM users +UNION ALL +SELECT 'avoirs', COUNT(*) FROM avoirs; + +-- SECTION 5: Si les tables ont des données, montrez quelques exemples +SELECT 'EXEMPLES SUPPLIERS' as check_type; +SELECT id, name, + CASE WHEN LENGTH(name) > 20 THEN LEFT(name, 20) || '...' ELSE name END as display_name +FROM suppliers LIMIT 3; + +SELECT 'EXEMPLES GROUPS' as check_type; +SELECT id, name, + CASE WHEN LENGTH(name) > 20 THEN LEFT(name, 20) || '...' ELSE name END as display_name +FROM groups LIMIT 3; + +SELECT 'EXEMPLES USERS' as check_type; +SELECT id, + COALESCE(username, 'no_username') as username, + CASE WHEN LENGTH(COALESCE(username, 'no_username')) > 15 + THEN LEFT(COALESCE(username, 'no_username'), 15) || '...' + ELSE COALESCE(username, 'no_username') END as display_username +FROM users LIMIT 3; + +-- SECTION 6: Test d'insertion simple +SELECT 'TEST INSERTION' as check_type; +-- Seulement si toutes les tables ont des données +SELECT CASE + WHEN (SELECT COUNT(*) FROM suppliers) > 0 + AND (SELECT COUNT(*) FROM groups) > 0 + AND (SELECT COUNT(*) FROM users) > 0 + THEN 'READY_FOR_INSERT' + ELSE 'MISSING_REFERENCE_DATA' +END as insert_status; \ No newline at end of file