the reason is because callback are wrapped within the transaction,
while just being called from a function isn't.
on to the error at hand. the only reason i can think that you're
getting this is because you set the dataSourceUserName and
dataSourcePassword in your config/setting.cfm. if those are set then
wheels will pass the username and password to the datasource with
every call.
when dealing with transactions, you have to pass the exact same
credentials with every call. so let's say you have the following two
cfquery calls:
query 1 you pass datasource, username, password
query 2 you just pass the datasource
since the credentials are different, you get the error that you're
getting. however if you do:
query 1 you pass datasource, username, password
query 2 you pass datasource, username, password
or
query 1 you just pass datasource
query 2 you just pass datasource
then everything works just fine.
that said, you have two options to fix this:
1) in your updateScore() method, pass in the datasource, username,
password arguments to the query call
2) remove the dataSourceUserName and dataSourcePassword in config/
settings.cfm and subsequent environment config files