If you’ve ever chased your tail for half an hour on vague errors in your vvv-init.sh
files in the popular Varying Vagrant Vagrants development tool for WordPress, here’s a few things to check.
Backticks in SQL statements
If the MySQL statements you’re executing have object names with special characters, you’ll most likely need to use backticks (`
) to enclose them within your script. Be sure to escape those backtick characters with backslashes (\\
) to ensure errors aren’t generated while VVV is executing your provisioning script.
Here’s an example of escaped backticks in vvv-init.sh
that works:
# Make a database, if we don't already have one
echo "Creating database (if it doesn't already exist) ..."
mysql -u root --password=root -e "CREATE DATABASE IF NOT EXISTS \\`my-database.com-dev\\`"
mysql -u root --password=root -e "GRANT ALL PRIVILEGES ON \\`my-database.com-dev\\`.* TO wp@localhost IDENTIFIED BY 'wp';"
echo "Database is setup!"
# Go on about setting up your sites ...
If you don’t escape backticks, you could likely see errors like this:
==> default: Creating database (if it doesn't already exist)
==> default: ERROR
==> default: 1064 (42000)
==> default: at line 1
==> default: : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.com-dev'
Unix/Linux/OSX line ending characters
If you’re editing your vvv-init.sh
file in Windows, make sure you’re saving those files with the correct Unix-style line endings, and not Windows-style (or the older Mac-style). If you don’t escape backticks, you could likely see errors like this:
==> default: vvv-init.sh: line 4:
\r': command not found