PHP-SQLlint
Command line tool to validate (syntax check) SQL files. Primarily for MySQL .sql files.
Can be used in git pre-commit hooks to catch errors. Use it from your shell, offline and without any SQL server.
You can also use it to format SQL queries.
Usage
Syntax check:
$ php-sqllint tests/files/create-missingcomma.sql Checking SQL syntax of tests/files/create-missingcomma.sql Line 3, col 5 at "pid": A comma or a closing bracket was expected. Line 3, col 13 at "11": Unexpected beginning of statement. Line 3, col 17 at "DEFAULT": Unrecognized statement type.
Emacs mode:
$ php-sqllint -r emacs tests/files/create-noname.sql tests/files/create-noname.sql:1.12:Error: The name of the entity was expected. tests/files/create-noname.sql:1.13:Error: A closing bracket was expected. tests/files/create-noname.sql:1.13:Error: At least one column definition was expected.
Formatting:
$ php-sqllint --format tests/files/select-unformatted.sql SELECT id, NAME, url FROM users WHERE DATE > NOW() AND id != 0 ORDER BY NAME LIMIT 10
Syntax highlighting
ANSI colors are applied automatically when not piping; you can use the --highlight option to override the automatism.
--highlight option values:
- none
- No highlighting. Use it to disable automatic highlighting
- ansi
- ANSI escape codes for your shell
- html
- HTML tags
Bugs
Does php-sqllint not detect a syntax error, or doesn't support a certain SQL statement? Then please report a bug at phpmyadmin/sql-parser.
Download
The download files are equipped with all dependencies. Just download and run.
Download the latest release:
-
0.2.2, 2018-03-02
-
php-sqllint-0.2.2.bz2.phar,
191 kiB
SHA256: bf6e1b994bd867b24e8d26db6a2c75818e0935a70bdefae5efe74df81611c735 -
php-sqllint-0.2.2.phar,
688 kiB
SHA256: 78d11f36ad003e13c3cff51113362eed8fa54ce5c3f932f6afe9b7ca0256a2a5
-
php-sqllint-0.2.2.bz2.phar,
191 kiB
See php-sqllint downloads page for all released versions.
Dependencies
Dependency installation
$ composer install
Now you can use ./bin/php-sqllint without building the phar yourself.
Building
Preparation
- Write new version number into VERSION
Create the release
You'll need phing, the PHP build tool:
$ phing
The result are .phar files in dist/ directory that you can execute:
$ ./dist/php-sqllint-0.0.1.phar tests/files/create-noname.sql Checking SQL syntax of tests/files/create-noname.sql Line 1, col 12 at "(": The name of the entity was expected.
About PHP-SQLlint
License
php-sqllint is licensed under the AGPL v3 or later.
Homepage
- Home page
- http://cweiske.de/php-sqllint.htm
- Source code
Author
Written by Christian Weiske, cweiske+php-sqllint@cweiske.de