Tangkap migrasi SQL yang tidak aman.
$ squabble sql/migration.sql
sql/migration.sql:4:46 ERROR: column "uh_oh" has a disallowed constraint [1004]
ALTER TABLE big_table ADD COLUMN uh_oh integer DEFAULT 0;
^
# Use --explain to get more information on a lint violation
$ squabble --explain 1004
ConstraintNotAllowed
When adding a column to an existing table, certain constraints can have
unintentional side effects, like locking the table or introducing
performance issues.
...Squabble juga dapat diintegrasikan dengan editor Anda untuk menangkap kesalahan dalam file SQL.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"Saat ini, sebagian besar aturan telah difokuskan pada postgres dan keanehannya. Namun, Squabble dapat mengurai SQL ANSI dan aturan baru yang khusus untuk database lain dihargai!
$ pip3 install squabble
$ squabble --helpCatatan
Pertengkaran hanya didukung pada python 3.5+
Jika Anda ingin menginstal dari sumber:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help Untuk melihat daftar aturan, coba
$ squabble --list-rulesKemudian, untuk menampilkan lebih banyak informasi verbose tentang aturan (seperti pemikiran dan opsi konfigurasi)
$ squabble --show-rule AddColumnDisallowConstraintsSetelah file konfigurasi ada, itu dapat diteruskan secara eksplisit pada baris perintah, atau secara otomatis melihat ke atas.
$ squabble -c path/to/config ... Jika tidak secara eksplisit diberikan pada baris perintah, Squabble akan mencari file bernama .squabblerc di tempat -tempat berikut (secara berurutan):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc Konfigurasi juga dapat diterapkan pada level file dengan menggunakan komentar garis SQL dalam formulir -- squabble-enable:RuleName atau -- squabble-disable:RuleName .
Misalnya, untuk menonaktifkan RuleA dan mengaktifkan RuleB hanya untuk satu file, ini bisa dilakukan:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Untuk mencegah pertengkaran berjalan pada file, gunakan -- squabble-disable . Perhatikan bahwa ini juga akan menonaktifkan pemeriksaan sintaksis. Perhatikan bahwa bendera ini akan lebih diutamakan daripada konfigurasi lain yang ditetapkan baik pada baris perintah atau di seluruh file.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble tentu saja bukan alat pertama di ruang ini. Jika tidak sesuai dengan kebutuhan Anda, pertimbangkan salah satu alat ini:
SELECT daripada migrasi.Proyek ini tidak akan mungkin tanpa:
Gambar logo yang digunakan dalam dokumentasi dibuat oleh Gianni - Dolce Merda dari proyek kata benda.