Question: How to log the error and warning while restoring the SQL dump on MySQL ?

Following are the steps we were doing.

```
mysql> CREATE DATABASE dbname;

mysql> USE dbname;

mysql> SOURCE dbdumpname.sql 

```

Answer: 
To redirect MySQL errors and warnings to a log file, restore the SQL dump from bash not from a MySQL prompt.

```
mysql -u root -p db_name < dumpfilename.sql > /var/tmp/mysqldump.log 2>&1

```

If you need to supresss foreign key checks, create a shell script named `mysql-import.sh` and put the following contents in it:

```
#!/bin/bash

mysql -u root -p'password' -h hostname db_name << EOF

CREATE DATABASE dbname;
USE dbname;
SET foreign_key_checks=0;
SOURCE dbdumpname.sql;

EOF

```

Then `chmod +x mysql-import.sh` to make the script executable and run the script as,

`./mysql-import.sh > /var/log/mysqldump.log 2>&1`

This script will run the code that you were running in MySQL, but with the ability to redirect output to a log file, since it can be invoked from the shell.
The mysql client offers a useful `--tee <tofile>` option. Either enable it at startup, or interactively in the prompt.

```
mysql> tee file.log
Logging to file 'file.log'
mysql> \W
Show warnings enabled.
mysql> use database;
mysql> source dump.sql;

```

Note the description in the [docs](https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html#idm140068392103088)

> 
> All the data displayed on the screen is appended into a given file. [..] Tee functionality works only in interactive mode.
> 
> 
>