@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)
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
Vamp
@Vamp
Проблема не в java, а в самом запросе. Если вы не перечисляете колонки, данные для которых вы хотите указать, то mysql считает, что вы собираетесь указать данные для всех существующих в таблице колонок. Независимо от того, есть там default значение или нет.

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

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

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

Войти через центр авторизации
Похожие вопросы