Note I'm not an DB expert. I was trying to evaluate Postgres and Mysql for my side project. I went ahead with Postgres after doing the following example:
#Mysql
create table test (name varchar(3));
insert into test (name) values ("hello world");
>Query affected 1 row // success!!
Even though my varchar size is 3, Mysql didn't even complain about my string size in insert statement. The weird thing is that, when you try to retrieve the value it returns only the first 3 chars which is "hel" (What??). I was expecting an error message but Mysql was happy to eat my error!
#Postgres
create table test (name varchar(3));
insert into test (name) values ("hello world");
>> Error, value too long for the given varying (3)
The Postgres looks doing simple things correct for me.