Подтвердить что ты не робот

"Количество столбцов не соответствует количеству значений в строке", но это делает

У меня есть файл mysql с более чем 14000 инструкциями. Все они вставляются в таблицу, и когда я импортирую файл с помощью консоли, он выдает следующую ошибку:

ERROR 1136 (21S01) at line 1548: Column count doesn't match value count at row 45

Я знаю, что ошибка появляется, когда строки, указанные в именах столбцов, отличаются от строк, указанных в списке VALUES, но я проверил их много раз, и количество столбцов в обоих списках одинаково.

Строка в позиции 45:

('00553', 'AAA', 'BBB', 'CCC', 'XXXXXXXXR', 'user address', 'spain', 'spain', '39212', '1900-01-21', '123456789', 'M', 'No disponible', 0, 'AAA', 'BBB ', 'CCC', 'XXXXXXXXR', NULL, '888993344', '', '', '', '', 'no', 'no') --> 26 columns

и связанная с ним строка вставки, многие строки выше:

INSERT INTO `users` (`id_patient`, `name`, `surname1`, `surname2`, `dni`, `address`, `city`, `state`, `postal_code`, `birthday`, `telephone`, `sex`, `email`, `lopd_status`, `lopd_name`, `lopd_surname1`, `lopd_surname2`, `lopd_dni`, `lopd_as`, `mobile_phone`, `notes`, `job`, `company`, `place`, `active_citation`, `signature`)  --> 26 columns

Я искал эту ошибку, но кажется, что она появляется только тогда, когда счет отличается, но в этом случае он тот же.

Любая идея?

EDIT: забыл упомянуть: если я выкидываю выражение sql непосредственно на phpmyadmin, он правильно добавляет строку без каких-либо ошибок. Он только сбой при запуске из командной строки, хотя приведенные выше инструкции корректно вставляются в базу данных, и они почти совпадают с этим.

EDIT2: я удалил все строки до 46, и когда я запускаю файл, erros выглядит следующим образом:

ERROR 1136 (21S01) at line 1503: Column count doesn't match value count at row 45

Он меняет только строку, но эта строка - это оператор INSERT, который в точности совпадает с другими инструкциями INSERT в остальной части файла. Строка предыстории также правильна.

4b9b3361

Ответ 1

У меня возникла аналогичная проблема из-за вставки скобок вокруг данных: - (:

INSERT INTO Customers (Name,LastCredit,CreditDate) VALUES ( <-- Here.
    ("Nuclear Millitary Systems",500.0,CURRENT_DATE),
    ("Evil Corporation",67890.95,"2012-02-12"),
    ("Nuke Software Systems",5600.0,"2013-05-06"),
    ("RR Millitary",600.0,"2013-05-06"),
    ("Random Automation",560.0,"2012-05-01"),
    ("Evil Data Systems",600.0,"2013-03-01")
  ); 

Ответ 2

Я столкнулся с аналогичной ошибкой. Это была просто пропавшая запятая. Проверьте, разделены ли все элементы в инструкции insert запятыми

Ответ 3

В моем случае у меня был триггер на INSERT с подсчетом рассогласования столбцов : (&

Ответ 4

В моем случае в моей таблице базы данных есть триггер, связанный с другой таблицей, и в таблице с триггером отсутствует один столбец. Что-то вроде этого:

Таблица 1: UserAccountID, тип документа, разрешения, статус

Триггерные столбцы таблицы 2: Номер редакции, статус пересмотра, UserAccountID, разрешения, статус

Итак, в таблице 2 отсутствует столбец типа документа. Проверьте триггеры в БД на

"показывают триггеры из {Имя базы данных}"

Ответ 5

Проверьте наличие специальных скрытых символов в файле. Вы можете подумать, что все пробелы в файле - это пробелы, но иногда другие символы могут убить вставку так, как вы не можете понять, просмотрев данные.

Если все остальное не удается, повторно введите INSERT вручную и запустите его в файле сам по себе, чтобы убедиться, что он все еще не работает.