Creo que el nombre de la base de datos no se refleja en su código. ¿Puedes intentar cambiar tu código como se muestra a continuación?
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
o
$dsn = "mysql:host=localhost;dbname=my_db;