В моем случае это было связано с тем, что поле, являющееся полем внешнего ключа, имеет слишком длинное имя, т. е. foreign key (some_other_table_with_long_name_id)
. Попробуйте коротко. В этом случае сообщение об ошибке немного вводит в заблуждение.
Кроме того, как упоминалось ранее @Jon, определения полей должны быть одинаковыми (обратите внимание на подтип unsigned
).
У вас есть более одного Scanner
, которые вы закрываете, что закрывает базовый InputStream
, поэтому другой Scanner
больше не может читать из тех же результатов InputStream
и NoSuchElementException
.
Для консольных приложений используйте один Scanner
для чтения из System.in
.
Поскольку вы печатаете одно и то же сообщение во всех трех местах, где исключено исключение, трудно сказать с какой-либо определенностью, что происходит:
printStackTrace()
, чтобы узнать где происходит исключение Exception
, как это. Поймите исключения, которые вы ожидаете, и что ваш код предназначен для обработки. Если вы поймаете Exception
, вы можете поймать всевозможные неожиданные исключения (NPE, конец файла и т. Д.) ... и неправильно сообщать о них как «Недопустимый формат».