No entiendo muy bien lo de "no nulas". Mis claves foráneas son calves primarias en las tablas referenciadas, por tanto no podrían nunca ser nulas, ¿no?
Dejo capturas del Workbench de MySQL:
La consulta que hago (desde Java) es la siguiente:
s.executeUpdate("INSERT INTO pedido "
+ "VALUES ('"
+ id + "','"
+ dni + "','"
+ cadFecha + "','"
+ cadFecha + "','"
+ forma_pago+ "',"
+ envio + ","
+ importe + ",'"
+ estado + "',"
+ online+ ");");
El campo 'dni' es un VARCHAR(9) en todas las tablas.
Saludos!