Я пытался создать очень простую таблицу SQL, которая ссылается на более крупную таблицу - эта таблица работает нормально, но вторая таблица постоянно выдает классическую ошибку «количество столбцов не соответствует количеству значений в строке».
CREATE TABLE NonHeadlessDistro
(
Headless INT,
Proprietary INT,
EaseInstall INT,
SimilarTo VARCHAR(28),
Gnome INT,
KDE INT,
LXDE INT,
XFCE INT,
MATE INT,
Cinna INT
);
INSERT INTO NonHeadlessDistro (Headless, Proprietary, EaseInstall,
SimilarTo, Gnome, KDE, LXDE, XFCE, MATE, Cinna)
VALUES ('0','1','2','macOS','1','1','1','1','1','0'),
('0','4','4','Linux','1','1','1','1','0','0'),
('0','1','1','Windows','0','1','0','1','1','1'),
('0','2','2','Windows','0','0','1','1','0','0'),
('0','1','5','Linux','1','0','0','0','0','0'),
('0','1','4','Linux','1','0','0','0','0','0'),
('0','2','2','Linux','1','1','1','1','1','1'),
('0','3','5','Linux','1','1','1','1','1','1'),
('0','2','2','Linux','0','1','0','0','1','0'),
('0','1','2','Linux','0','0','1','0','0','0'),
('0','1','4','Linux' '1','1','0','0','0','0'),
('0','3','5','Linux','1','1','1','1','1','1'),
('0','2','3','Linux','0','0','0','0','1','0'),
('0','3','5','Linux','1','1','1','1','1','1'),
('0','1','4','Linux','1','1','0','0','0','0'),
('0','5','2','Linux','1','0','1','0','1','0'),
('0','5','5','Linux','0','0','1','0','1','0'),
('0','5','4','Linux','1','0','0','0','0','0'),
('0','5','5','Linux','1','0','1','1','0','0'),
('0','2','3','Linux','1','1','1','0','0','0'),
('0','2','3','Linux','1','1','0','1','1','1'),
('0','2','3','Linux','0','0','1','0','0','0'),
('0','2','3','Linux','1','1','1','1','1','0'),
('0','2','1','Linux','1','1','1','1','1','1'),
('0','2','1','Linux','1','1','0','1','1','0');
SELECT linux_distro
FROM linux_distro LEFT JOIN NonHeadlessDistro
ON Headless
WHERE Headless = "0";
Точное сообщение об ошибке выглядит так:
1 errors were found during analysis
1. 10 values were expected, but found 9. (near "(" at position 596)
MySQL said:
#1136 - Column count doesn't match count at row 11
Используя онлайн-средства проверки ошибок SQL, проблема, похоже, находится в строке INSERT INTO, но я полностью не понимаю, почему один из столбцов не был подтвержден, поскольку я проверил, что количество столбцов равно к количеству ЦЕННОСТЕЙ. Читая другие решения для ошибки, проблема обычно возникает в результате неправильных кавычек или пропущенных значений / столбцов, но, хоть убей, я не могу понять, что не так с моим SQL. Скорее всего, это невероятно простая ошибка, учитывая, что мои первоначальные ошибки с первой таблицей были решены добавлением отсутствующей точки с запятой. Любая помощь будет принята с благодарностью.
Обновлено: я слепой, я не мог видеть свою пропущенную запятую в строке 11. Однако я открыл еще одну банку червей - до того, как MySQL ожидал 10 значений и нашел только 9 значений, но с редактированием теперь ожидает 11 значений, и он может найти только 10. Теперь он также влияет на все 24 строки из
INSERT INTO NonHeadlessDistro (Headless, Proprietary, EaseInstall,
SimilarTo, Gnome, KDE, LXDE, XFCE, MATE, Cinna)
до финала
('0','2','1','Linux','1','1','0','1','1','0');
строка, поэтому у меня одна и та же ошибка повторяется 24 раза. Я предполагаю, что здесь, вероятно, есть довольно фундаментальная проблема:
MySQL said:
#1136 - Column count doesn't match value count at row 1
Почему вы вставляете строковые значения в целочисленные столбцы?
Вы проверили строку 11, которая указана в сообщении об ошибке? В этой строке отсутствует запятая.
Майк - я этого не делал
HoneyBadger - похоже, я не сталкивался с какими-либо проблемами, связанными с вводом строковых значений, по крайней мере, в том, что касается диагностики ошибок.
Я не думаю, что это связано с вашей текущей проблемой, но вы всегда должны использовать соответствующие типы данных.






Эта линия
('0','1','4','Linux' '1','1','0','0','0','0'),
отсутствует запятая
Установлены ли у вас какие-либо триггеры для обновления другой таблицы, например таблицы аудита? Схему таблицы аудита также необходимо будет обновить.