@Neonoviiwolf
Flutter developer

Почему параметры, выставленные в MySQL, не всегда работают в JAVA?

Доброго
Долго пытался решить простую проблему, которую выкидывал SQLException: Column count doesn't match value count at row 1
Ну долго решал, т.к. успел ещё написать блок работы с БД и думал, что там проблема возникает, но всё же.

1)Пишу на Java, создал небольшую вспомогательную прогу, в которой заполняешь данные для внесения в БД, решил я значит добавить ещё пару колонок и поставил MySQL Workbench 6.3 CE, что они по умолчанию принимают значение null (планировал позднее их заполнить), т.к. несмотря на то, что хоть галочка на NOT NULL и не стоит, всё равно нужно туда что-то писать.
2)Ещё с id, стоят primary key и not null, но сам id не заполняется (может я не правильно пишу запрос)
INSERT = "INSERT INTO users VALUES (?, ?, ?, ?, ?, ?, ?)";

под первым "?" идёт id, этот вариант требует, чтобы я обязательно заполнил preparedStatement.setInt(1, id)
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Vamp
@Vamp
Проблема не в java, а в самом запросе. Если вы не перечисляете колонки, данные для которых вы хотите указать, то mysql считает, что вы собираетесь указать данные для всех существующих в таблице колонок. Независимо от того, есть там default значение или нет.

Для решения вашей проблемы необходимо явным образом перечислить колонки:
INSERT = "INSERT INTO users (login, password, email, group, ip, country, city) VALUES (?, ?, ?, ?, ?, ?, ?)";

Все колонки, явным образом не перечисленные в запросе, получат значение по умолчанию, если оно было определено при создании таблицы для них.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы