Un smallint de 17 caracteres no significa que puedas meter cualqiuer numero hasta 17 cifras.
El tipo smallint a su vez tiene un rango limite. Por ejemplo, normalmente el tipo integer suele admitir números desde el -65536 hasta el +65536 (+ ó -) Entonces te está dando mas bien un desbordamiento.
un numero de telefono definido como de tipo número y unsigned como maximo podra ser: 999 999 999 (novecientos neventa y nueve millones novecientos noventa mil novecientos noventa y nueve!!!!)))) Te pasas, cierto?
O eliges un tipo numerico con un rango mayor como puede ser el unsignes double (no se si mysql lo tiene) o mejor aun... yo optaria por un tipo varchar o char de 17 caracteres.
Un beso