Привет! Я пытаюсь загрузить CSV-файл с множеством тегов, но каждый раз получаю сообщение об ошибке: «Извините, произошла ошибка при загрузке файла. Пожалуйста, попробуйте снова».
В логах административной панели указано:
Сообщение (8 записей)
Не удалось корректно обработать перехваченный ответ: Ошибка валидации: Имя некорректно
Трассировка стека
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/validations.rb:80:in `raise_validation_error'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/validations.rb:53:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `block in save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/suppressor.rb:48:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/persistence.rb:55:in `create!'
Я также попробовал создать тестовый тег (например, просто одну запись в CSV-файле — слово java), но получил ту же ошибку.
Кстати, я установил Discourse на DigitalOcean согласно официальному руководству по установке, и всё остальное работает корректно.
Спасибо, @codinghorror — обязательно дайте знать, если что-то найдёте. Для справки: я использую версию 2.5.0.beta7 ( 14dc6f350e ) на Droplet с 4 ГБ ОЗУ и SSD объёмом 80 ГБ.
Кроме того, я установил плагины akismet, formatting-toolbar и discourse-voting.
Я только что протестировал это на try.discourse.org. Я создал простой текстовый редактор CSV-файл под названием tags.csv, содержащий только слово java, и смог использовать инструмент массовой загрузки тегов для добавления нового тега без проблем.
Сайт try.discourse.org использует Akismet и Discourse-voting, и я крайне сомневаюсь, что плагин formatting-toolbar мог бы конфликтовать каким-либо образом, приводящим к ошибке, которую вы видите.
Можете ли вы загружать файлы без проблем в других контекстах (сообщения, темы и т. д.)?
Загрузка всё равно не удаётся. Не связано ли это с правами доступа? Я являюсь администратором сайта, поэтому, полагаю, у меня должны быть все необходимые права для этого.
На этот раз я использую версию 2.5.0.beta7 ( 70e50a2255 ).
Дайте знать, если хотите, чтобы я попробовал что-то ещё. Спасибо!
Хм, я попробовал переименовать свой файл в tags-1.csv, но всё равно не смог воспроизвести ошибку. Если вы вернёте его обратно к tags-1.csv и попробуете загрузить, ошибка появится снова? Мне интересно, не было ли в вашем исходном имени файла чего-то ещё, что мешало, и переименование в tags.csv как-то решило проблему.
Нет, у меня всё ещё не работает. На моём Mac я делаю следующее:
$ vi tags-1.csv
Затем i для входа в режим редактирования java esc для выхода из режима редактирования :wq и Enter для сохранения и выхода.
Всё. Это тоже не работает. Сначала я подумал, что проблема может быть связана с экспортом Excel в CSV, но даже редактирование через командную строку вызывает ошибки.
Пока я продолжу работу с tags.csv, но если вы считаете это важным и хотите, чтобы я провёл тесты, я с радостью это сделаю. То же самое произошло на двух разных дроплетах с чистыми установками, что меня обеспокоило.
Я вижу ещё одну проблему (снова не уверен, связана ли она с моей средой).
Мои теги — это список языков программирования. В этом списке были C++ и C#, и как только я удалил их из файла tags.csv, массовая загрузка прошла успешно. Интересно, связано ли это с тем, что тег заканчивается специальным символом. Снова, возможно, это только у меня
Да! Это точно проблема. Я думал, что мы работаем только со словом java в файле, судя по вашему последнему сообщению. Вам нужно использовать что-то вроде cpp, c-sharp и т.д.
Да, я думаю, это было бы идеально. Текущая ошибка не дает пользователю почти никакой информации:
Произошла ошибка при загрузке файла. Пожалуйста, попробуйте снова.
Интересный момент, о котором я не знал: при попытке создать тег в обычных контекстах создания или редактирования темы, похоже, мы просто тихо удаляем все символы. Таким образом, ввод C++ предложит тег C.
Я хотел отредактировать текст (чтобы указать на возможность некорректных тегов), но, похоже, этот текст применяется ко всем загрузкам, поэтому он не всегда будет точным.
Да, это, похоже, именно так. Я нашел место в коде загрузки тегов, где выбрасывается общая ошибка, поэтому попробую создать более конкретную ошибку для этого случая в рамках pull-запроса.