You have empty string for item with index 2 (@{DB}[2]), corresponding to dbPassword. I'm assuming this means you have a blank password for user root.
This is causing the database library to try and load the value for dbPassword from a config file that does not exist.
This is happening because of this logic:
dbUsername = dbUsername or config.get('default', 'dbUsername')
Here dbUserName is an empty string so it evaluates to False and so the config.get part is used.
Using a user with a password with workaround this issue. Also using a dbConfig file to store the parameters would also workaround the issue. I can think of other workarounds, but the would be more difficult.
Reporting this would be helpful, as I think this is a perfectly valid use case (empty password).
For best practices, I recommend using ${EMPTY} as it is a little more explicit...
@{DB} robotframework root ${EMPTY} localhost 3306
Also it is more helpful in the future that if you have a problem like this use --loglevel DEBUG. Then you get output that is more helpful like this:
20140801 08:46:16.420 : DEBUG :
Traceback (most recent call last):
File "C:\apps\Python27\lib\site-packages\DatabaseLibrary\connection_manager.py", line 67, in connect_to_database
dbPassword = dbPassword or config.get('default', 'dbPassword')
File "C:\apps\Python27\lib\ConfigParser.py", line 607, in get
raise NoSectionError(section)
Cheers,
Kevin