jjclane/laravel-sqlite-migrations
Trait for Laravel migrations that makes schema changes SQLite-safe. Automatically transforms unsupported column types and avoids “Cannot add a NOT NULL column with default value NULL” by adding columns safely, letting migrations run cleanly on SQLite.
NOT NULL defaults, unsupported datatypes like ENUM, JSONB) cause migration failures.ENUM → TEXT, JSONB → TEXT).NOT NULL constraints via nullable → non-nullable column transitions in separate steps.LIMIT/OFFSET behavior, aggregate functions).TransformMigration) that wraps Laravel’s Migration class, enabling opt-in adoption per migration file.transformMigration() calls where needed.--dev, ensuring no runtime overhead in production.| Risk Area | Assessment |
|---|---|
| SQLite-Specific Logic | Risk: Trait may not cover edge cases (e.g., composite keys, triggers). |
| Migration Ordering | Risk: Manual transformMigration() calls could break if missequenced. |
| Testing Coverage | Risk: Limited test suite (14 stars, no CI badges) may miss subtle bugs. |
| Future Laravel Versions | Risk: May require updates if Laravel’s Blueprint API changes. |
Blueprint.ENUM, NOT NULL defaults).SQLiteMigration class extending Laravel’s Migration with the trait pre-included.| Component | Compatibility Notes |
|---|---|
| Laravel Version | Tested with Laravel 8+ (per README). Verify compatibility with your version. |
| SQLite Version | Assumes modern SQLite (3.x+). Check for version-specific quirks. |
| PHP Extensions | Requires pdo_sqlite (standard in Laravel). |
| Other Packages | Conflicts unlikely, but test with laravel/scout, spatie/laravel-permission, etc. |
composer require jjclane/laravel-sqlite-migrations --dev.phpunit.xml to include SQLite in test suites.transformMigration() for high-risk migrations.table() calls with transformMigration().schema:dump).use JJCLane\SQLiteMigration\TransformMigration; in migrations.sqlite3 -log) to inspect raw queries.DB::enableQueryLog() to compare transformed vs. non-transformed SQL.| Scenario | Mitigation Strategy |
|---|---|
| Migration Fails Mid-Transformation | Use transactions (DB::transaction()) to ensure atomicity. |
| Data Corruption | Backup SQLite DB before running migrations. Test rollbacks thoroughly. |
| Unsupported Datatype | Fallback to manual SQL or feature request to package maintainer. |
| Laravel Version Incompatibility | Pin package version or fork if critical features break. |
transformMigration() vs. table().ENUM → TEXT).How can I help you explore Laravel packages today?