docs: Add comprehensive troubleshooting guide for import issues
This commit is contained in:
168
docs/TROUBLESHOOTING_IMPORTS.md
Normal file
168
docs/TROUBLESHOOTING_IMPORTS.md
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
# Troubleshooting Import Issues
|
||||||
|
|
||||||
|
## Encoding Errors
|
||||||
|
|
||||||
|
### Problem: "charmap codec can't decode byte"
|
||||||
|
**Symptoms:**
|
||||||
|
```
|
||||||
|
Fatal error: 'charmap' codec can't decode byte 0x9d in position 7244: character maps to <undefined>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
This has been fixed in the latest version. If you still see this error:
|
||||||
|
|
||||||
|
1. **Rebuild Docker container** (changes don't apply until rebuild):
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
docker-compose build
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Verify the fix is active**:
|
||||||
|
```bash
|
||||||
|
# Check encoding order includes iso-8859-1 early
|
||||||
|
docker-compose exec delphi-db grep "encodings = " app/import_legacy.py
|
||||||
|
|
||||||
|
# Should show: ["utf-8", "utf-8-sig", "iso-8859-1", "latin-1", ...]
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Check container is using new image**:
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
# Note the CREATED time - should be recent
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: File not found during import
|
||||||
|
|
||||||
|
**Symptoms:**
|
||||||
|
- "File not found" error
|
||||||
|
- Import appears to succeed but no data imported
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
1. Make sure files are in the `data-import/` directory
|
||||||
|
2. Files must be accessible inside the Docker container
|
||||||
|
3. Check docker-compose.yml mounts the correct volume:
|
||||||
|
```yaml
|
||||||
|
volumes:
|
||||||
|
- ./data-import:/app/data-import
|
||||||
|
```
|
||||||
|
|
||||||
|
## Import Workflow Issues
|
||||||
|
|
||||||
|
### Problem: Import hangs or takes too long
|
||||||
|
|
||||||
|
**Symptoms:**
|
||||||
|
- Import never completes
|
||||||
|
- Browser shows loading indefinitely
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
1. Check Docker logs:
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f delphi-db
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Large files (50k+ rows) may take several minutes
|
||||||
|
3. Check for duplicate key violations in logs
|
||||||
|
|
||||||
|
### Problem: "Unknown import type"
|
||||||
|
|
||||||
|
**Symptoms:**
|
||||||
|
- File uploads but shows as "unknown"
|
||||||
|
- Cannot auto-import
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
1. File must match expected naming pattern (e.g., `rolodex_*.csv`)
|
||||||
|
2. Use manual mapping in admin interface:
|
||||||
|
- Go to Admin → Import section
|
||||||
|
- Find the unknown file
|
||||||
|
- Click "Map to Import Type"
|
||||||
|
- Select correct import type
|
||||||
|
- Save and import
|
||||||
|
|
||||||
|
## Database Issues
|
||||||
|
|
||||||
|
### Problem: Duplicate key violations
|
||||||
|
|
||||||
|
**Symptoms:**
|
||||||
|
```
|
||||||
|
UNIQUE constraint failed: rolodex.id
|
||||||
|
IntegrityError: duplicate key value
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
1. Data already exists - safe to ignore if re-importing
|
||||||
|
2. To clear and re-import:
|
||||||
|
- Delete existing database: `rm delphi.db`
|
||||||
|
- Restart container: `docker-compose restart`
|
||||||
|
- Import files in correct order (reference data first)
|
||||||
|
|
||||||
|
### Problem: Foreign key violations
|
||||||
|
|
||||||
|
**Symptoms:**
|
||||||
|
```
|
||||||
|
FOREIGN KEY constraint failed
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
Import files in dependency order:
|
||||||
|
1. Reference tables first (employee, filetype, etc.)
|
||||||
|
2. Core tables next (rolodex, files)
|
||||||
|
3. Related tables last (phone, ledger, payments)
|
||||||
|
|
||||||
|
See `IMPORT_ORDER` in admin interface for correct sequence.
|
||||||
|
|
||||||
|
## Debugging Steps
|
||||||
|
|
||||||
|
### 1. Check Application Logs
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f delphi-db
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Access Container Shell
|
||||||
|
```bash
|
||||||
|
docker-compose exec delphi-db bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Test Import Manually
|
||||||
|
```python
|
||||||
|
# Inside container
|
||||||
|
python3 << EOF
|
||||||
|
from app.import_legacy import open_text_with_fallbacks
|
||||||
|
import csv
|
||||||
|
|
||||||
|
f, encoding = open_text_with_fallbacks('data-import/rolodex_*.csv')
|
||||||
|
print(f"Encoding: {encoding}")
|
||||||
|
reader = csv.DictReader(f)
|
||||||
|
print(f"Columns: {reader.fieldnames}")
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Check File Permissions
|
||||||
|
```bash
|
||||||
|
ls -la data-import/
|
||||||
|
# Files should be readable
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Verify Python Environment
|
||||||
|
```bash
|
||||||
|
docker-compose exec delphi-db python3 --version
|
||||||
|
docker-compose exec delphi-db pip list | grep -i sql
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Mistakes
|
||||||
|
|
||||||
|
1. **Not rebuilding after code changes** - Docker containers use cached images
|
||||||
|
2. **Wrong file format** - Must be CSV with headers
|
||||||
|
3. **File encoding not supported** - Should be handled by fallback, but exotic encodings may fail
|
||||||
|
4. **Importing in wrong order** - Dependencies must be imported first
|
||||||
|
5. **Missing required columns** - Check CSV has expected columns
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If issues persist:
|
||||||
|
1. Check logs: `docker-compose logs delphi-db`
|
||||||
|
2. Note exact error message and stack trace
|
||||||
|
3. Check which import function is failing
|
||||||
|
4. Verify file format matches expected schema
|
||||||
|
5. Try importing a small test file (10 rows) to isolate issue
|
||||||
|
|
||||||
Reference in New Issue
Block a user