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