Pasting SQL into the MySQL command line
This is the default mysql (CLI) behavior each time the user presses the Tab key (mysql uses the underlying readline or EditLine libraries (not on Windows)).
By default, when the user requests to use
a database, mysql reads tables and fields definitions. Then, pressing the Tab key makes mysql conveniently offers completion of the current input with the known tables and fields.
However, pasting some text into mysql that contains TAB characters (\t
or 0x09
) triggers the same behavior - even though no Tab key was actually pressed from the keyboard. And this can be annoying.
Two options given to mysql can prevent that behavior, though. My favorite is --disable-auto-rehash
. The other one is --quiet
or -q
.
--disable-auto-rehash
to prevent database, table, and column name completion (which are not read from the database, use therehash
command if later on you need completion). Commands history is kept, though (retrieved via the ↑ and ↓ keys for instance). Which is convenient.--quick
or-q
which makes mysql not using the history file and no completion (does not read the database definitions).
On Linux one may add an alias in .bashrc
to use --disable-auto-rehash
automatically
alias mysql2='mysql --disable-auto-rehash'
Perhaps you could save the statement to a text file myTest.sql
, then use the MySQL command source myTest.sql
to run it? You could then tweak the SQL in the file, save the changes, and run it again.