SSIS column cannot convert between unicode and non-unicode string data types
Double click the line between the source and destination and select the Metadata tab. That will list all of your columns and the data types SSIS has inferred.

I would compare that to your source and 100% ensure they align. 

What can happen is that the first time you built your data flow, SSIS will set the metadata based on what the types are at that point. col1 is interpreted to be nvarchar so it'll set it as DT_WSTR of some length. 

Time passes and you update the query and the source is now varchar, but still called col1. A varchar will always fit into an nvarchar so the shape of that column hasn't "changed" so SSIS doesn't need to redo it's internals.

If it is the case that SSIS is clinging to old metadata, my click path is to 


Copy the existing query
Change my query to SELECT 1 as TotallyNewAndUniqueColumn
SSIS will then report that all my metadata is out of whack and would I like to autofix it, and I click Yes
Repaste the original query and lo and behold, the current metadata is captured.