จับการอพยพ SQL ที่ไม่ปลอดภัย
$ 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.
...การทะเลาะกันสามารถรวมเข้ากับตัวแก้ไขของคุณเพื่อจับข้อผิดพลาดในไฟล์ SQL
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"ปัจจุบันกฎส่วนใหญ่มุ่งเน้นไปที่ postgres และนิสัยใจคอ อย่างไรก็ตามการทะเลาะกันสามารถแยกวิเคราะห์ ANSI SQL และกฎใหม่ที่เฉพาะเจาะจงกับฐานข้อมูลอื่น ๆ ได้รับการชื่นชม!
$ pip3 install squabble
$ squabble --helpบันทึก
การทะเลาะกันเท่านั้นที่รองรับใน Python 3.5+
หากคุณต้องการติดตั้งจากแหล่งที่มา:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help หากต้องการดูรายการกฎลอง
$ squabble --list-rulesจากนั้นเพื่อแสดงข้อมูล verbose เพิ่มเติมเกี่ยวกับกฎ (เช่นตัวเลือกเหตุผลและการกำหนดค่า)
$ squabble --show-rule AddColumnDisallowConstraintsเมื่อมีการกำหนดค่าไฟล์แล้วจะสามารถส่งผ่านได้อย่างชัดเจนบนบรรทัดคำสั่งหรือค้นหาโดยอัตโนมัติ
$ squabble -c path/to/config ... หากไม่ได้รับอย่างชัดเจนในบรรทัดคำสั่งการทะเลาะกันจะมองหาไฟล์ชื่อ .squabblerc ในสถานที่ต่อไปนี้ (ตามลำดับ):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc การกำหนดค่ายังสามารถนำไปใช้ในระดับไฟล์โดยใช้ความคิดเห็นของ SQL Line ในรูปแบบ -- squabble-enable:RuleName หรือ -- squabble-disable:RuleName
ตัวอย่างเช่นเพื่อปิดการใช้งาน RuleA และเปิดใช้งาน RuleB เพียงไฟล์เดียวสิ่งนี้สามารถทำได้:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; เพื่อป้องกันการทะเลาะกันจากการรันในไฟล์ให้ใช้ -- squabble-disable โปรดทราบว่าสิ่งนี้จะปิดใช้งานการตรวจสอบไวยากรณ์ โปรดทราบว่าการตั้งค่าสถานะนี้จะมีความสำคัญกว่าชุดการกำหนดค่าอื่น ๆ ทั้งในบรรทัดคำสั่งหรือในส่วนที่เหลือของไฟล์
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} แน่นอนว่า squabble ไม่ใช่เครื่องมือแรกในพื้นที่นี้ หากไม่ตรงกับความต้องการของคุณให้พิจารณาเครื่องมือเหล่านี้:
SELECT มากกว่าการย้ายถิ่นโครงการนี้จะเป็นไปไม่ได้หากไม่มี:
ภาพโลโก้ที่ใช้ในเอกสารถูกสร้างขึ้นโดย Gianni - Dolce Merda จากโครงการคำนาม