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 ( </span>) to enclose them within your script. Be sure to escape those backtick characters with backslashes (<span class="lang:default decode:true crayon-inline ">\\) 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:
1 2 3 4 5 6 7 |
# 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 [email protected] 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:
1 2 3 4 5 |
==> 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:
1 |
==> default: vvv-init.sh: line 4: $'\r': command not found |