Troubleshooting
Quick solutions for common issues when working with CQL.
Setup & Installation Issues
Shard Installation Fails
Error: Failed to resolve dependencies
Solution:
Check Crystal version compatibility:
crystal --versionUpdate
shard.ymlwith compatible version:dependencies: cql: github: azutoolkit/cql version: "~> 1.0"Install with:
shards install
Database Driver Not Found
Error: can't load file 'pg'
Solution: Add the database driver to shard.yml:
dependencies:
# PostgreSQL
pg:
github: will/crystal-pg
# MySQL
mysql:
github: crystal-lang/crystal-mysql
# SQLite
sqlite3:
github: crystal-lang/crystal-sqlite3Database Connection Problems
Connection Refused
Error: Connection refused (Errno)
Solutions:
Verify database is running:
Check connection string format:
Test connection manually:
Authentication Failed
Error: password authentication failed
Solutions:
Test credentials manually:
Use environment variables:
Create database user if needed:
Schema & Migration Issues
Column Not Found Error
Error: undefined method 'name' for #<NamedTuple(id: Int64)>
Solution: Ensure schema matches database:
Verify with: crystal run db/migrate.cr
Migration Fails - Column Exists
Error: column "email" already exists
Solution: Check before adding columns:
Query & Model Issues
Type Mismatch Errors
Error: no overload matches 'User#new'
Solution: Use proper type casting:
Records Not Found
Error: DB::NoResultsError
Check if migration was run:
Verify table structure:
❌ Issue: Migration Fails with Column Already Exists
Solutions:
Check existing columns before adding:
Use conditional migrations:
Reset and rebuild database (development only):
🔍 Query & Model Issues
❌ Issue: Type Mismatch Errors
Solution:
Ensure proper type casting:
Use safe casting with validation:
❌ Issue: Records Not Found
Debugging Steps:
Use safe find methods:
Check your query conditions:
Verify data exists:
❌ Issue: Association Loading Problems
Solution:
Verify association is defined:
Check foreign key setup:
⚠️ Runtime Errors
❌ Issue: Validation Errors Not Displayed
Solution:
Always check validation errors:
Use save! for development debugging:
❌ Issue: Transaction Rollback Problems
Solution:
Ensure exceptions are raised:
Handle rollback explicitly:
⚡ Performance Issues
❌ Issue: Slow Queries
Debugging Steps:
Enable query logging:
Analyze query performance:
Check for N+1 queries:
❌ Issue: High Memory Usage
Solutions:
Use pagination for large datasets:
Use select to limit columns:
🛠️ Development Tips
🔍 Debugging Techniques
Enable SQL logging:
Inspect model state:
Check database state:
⚡ Quick Fixes
Reset database in development:
Clear and rebuild schema cache:
Check for pending migrations:
🆘 Getting More Help
📚 Additional Resources
CQL Documentation - Complete documentation
GitHub Issues - Report bugs or get help
Crystal Forum - Community discussions
Crystal Discord - Real-time chat support
🐛 Reporting Issues
When reporting issues, please include:
Crystal version:
crystal --versionCQL version: Check your
shard.ymlDatabase type and version
Minimal reproduction code
Full error message and stack trace
Expected vs actual behavior
💡 Best Practices
Use transactions for multi-step operations
Validate input before database operations
Handle exceptions gracefully in production
Use environment variables for sensitive configuration
Test database operations with proper fixtures
Monitor query performance in production
Keep migrations reversible when possible
💡 Pro Tip: Most CQL issues are related to schema mismatches or missing validations. Always verify your schema definitions match your database structure and use proper error handling patterns.
Still stuck? Check the FAQ section or reach out to the community for help! 🤝
Last updated
Was this helpful?