C # - загрузка данных из файла в MySQL - фатальная ошибка - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь загрузить данные в таблицу mysql, когда я запускаю код в MySql Workbench, он работает нормально, но когда я пытаюсь запустить его в моем приложении c #, я получаю эту ошибку:

Fatal error encountered during command execution.

Вот мой код:

mConn.Open(); //Opens the connection
string query = "delete from time; alter table time auto_increment=1; LOAD DATA INFILE 'C://time_u.txt' INTO TABLE `time` CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col2, @col3) set date = @col2, hour = @col3;";
WriteDataToDataBase(query); //This guy just executes the command.ExecuteNonQuery();
mConn.Close();

Ps: у меня есть 3 столбца, первый - это первичный ключ (id), который я не могу импортировать, его нужно увеличить на один автоматическивторая - это дата (varchar), а третья - часы (также varchar).

ОБНОВЛЕНИЕ
Я попытался изменить код LOAD DATA и обнаружил, чточасть, которая дает ошибку, является этой частью: (@col2, @col3) set date = @col2, hour = @col3;.Когда я удаляю это, код работает (он не работает в моем случае, потому что без этого он пытается поместить данные в первичный ключ), но не показывает эту первую ошибку.

Спасибо ...

1 Ответ

0 голосов
/ 22 мая 2018

MySql.Data обрабатывает @col2, @col3 как (неопределенные) параметры запроса, что вызывает эту ошибку.Одним из обходных путей будет добавление AllowUserVariables=true в строку подключения.

Другим обходным решением будет избегать переменных и просто загружать данные в нужные вам столбцы:

LOAD DATA INFILE 'C://time_u.txt'
INTO TABLE time
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(date, hour);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...