3.5 KiB
🔧 Solución Rápida - Error: no such column: medicine_id
❌ El Error
Error: SQLITE_ERROR: no such column: medicine_id
Este error ocurre porque la base de datos tiene la estructura antigua que usa medicine_id, pero el código actualizado ahora usa medicine_nregistro.
✅ Soluciones
Opción 1: Reset Completo (Recomendado para desarrollo)
Esto eliminará todos los datos actuales:
cd backend
# Método 1: Usando el script
npm run reset-db
# Método 2: Manual
rm database.sqlite
node seed.js
node create-admin.js
Opción 2: Migración (Mantiene farmacias, pierde vínculos medicamento-farmacia)
cd backend
node migrate.js
Nota: Esta opción mantiene las farmacias pero elimina las relaciones medicamento-farmacia porque ahora usan un esquema diferente (nregistro de CIMA en lugar de IDs locales).
Opción 3: Manual con SQLite
Si quieres más control:
cd backend
sqlite3 database.sqlite
# Dentro de SQLite:
DROP TABLE IF EXISTS pharmacy_medicines;
DROP INDEX IF EXISTS idx_pharmacy_medicine;
CREATE TABLE pharmacy_medicines (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pharmacy_id INTEGER NOT NULL,
medicine_nregistro TEXT NOT NULL,
medicine_name TEXT,
price REAL,
stock INTEGER DEFAULT 0,
FOREIGN KEY (pharmacy_id) REFERENCES pharmacies(id),
UNIQUE(pharmacy_id, medicine_nregistro)
);
CREATE INDEX idx_pharmacy_medicine ON pharmacy_medicines(medicine_nregistro);
.quit
🔍 Verificar la Estructura
Para verificar que la base de datos tiene la estructura correcta:
cd backend
sqlite3 database.sqlite "PRAGMA table_info(pharmacy_medicines);"
Salida esperada:
0|id|INTEGER|0||1
1|pharmacy_id|INTEGER|1||0
2|medicine_nregistro|TEXT|1||0
3|medicine_name|TEXT|0||0
4|price|REAL|0||0
5|stock|INTEGER|0|0|0
🚀 Después de la Corrección
-
Verifica que Redis esté corriendo:
redis-cli ping # Debe responder: PONG -
Inicia el servidor:
cd backend npm start -
Vincula medicamentos en el Admin Panel:
- Ve a http://localhost:3000
- Haz login en el Admin Panel
- Ve a la pestaña "Link Medicine"
- Busca medicamentos desde CIMA
- Vincúlalos a tus farmacias
📝 ¿Por qué cambió?
La aplicación ahora usa la API oficial de CIMA (Agencia Española de Medicamentos) en lugar de almacenar medicamentos localmente.
Beneficios:
- ✅ Datos siempre actualizados
- ✅ Más de 30,000 medicamentos disponibles
- ✅ Información oficial y verificada
- ✅ Menos mantenimiento de base de datos
Estructura anterior:
pharmacy_medicines
- medicine_id → ID local en tabla medicines
Estructura nueva:
pharmacy_medicines
- medicine_nregistro → Número de registro de CIMA
- medicine_name → Nombre cacheado para mostrar
💡 Preguntas Frecuentes
P: ¿Perderé mis farmacias?
R: No, las farmacias se mantienen. Solo necesitas re-vincular los medicamentos.
P: ¿Perderé los vínculos medicamento-farmacia?
R: Sí, porque ahora usan un sistema diferente (nregistros de CIMA). Tendrás que re-vincularlos usando el panel de admin.
P: ¿Y si tengo muchos vínculos?
R: La migración vale la pena por los beneficios a largo plazo. La re-vinculación es fácil con la búsqueda en tiempo real desde CIMA.
📚 Más Información
- Ver MIGRATION.md para guía completa de migración
- Ver CHANGES.md para lista de todos los cambios
- Ver README.md para documentación general