MySQL Duplicate запись '16777216' для ключа 1 Ошибка

0

У меня есть база данных MySQL, заполняемая приложением С#, массовая загрузка записей в масштабе более 100 миллионов записей. После импорта этих записей в данные используются дополнительные аналитические и другие инструменты оценки. Когда я выбираю меньший поднабор данных, записи становятся все точнее, однако, когда я использую полный набор данных, как только запись # 16777216 достигнута, эта ошибка возникает. До того, как у меня были уникальные первичные настройки, дублирующие записи идентификаторов создавались здесь и там, но все данные поступали. Однако, если учесть дублированные записи, дальнейшая обработка приводила к неправильным результатам.

Мой вопрос прост, кто-нибудь слышал об этой проблеме раньше, и если да, то что происходит? Является ли это ошибкой в ​​моей версии MySQL? Я запускаю MySQL 5.0.67 в Windows XP.

Спасибо большое!

  • 0
    16777216 - максимальное количество значений в 24-битном целом числе. Каков размер значения, которое вы используете в столбцах PRIMARY и UNIQUE?
  • 0
    поле первичного ключа является первичным ключом BIGINT, а не нулевым автоприращением без знака.
Показать ещё 2 комментария
Теги:
mysql-error-1062

2 ответа

0

просто любопытно...

какая-либо особая причина, по которой вы не используете infid данных загрузки для заполнения ваших таблиц?

если вам нужно обработать данные в своем приложении перед загрузкой, вы все равно можете это сделать, а вывести файл csv вместо вызова sproc 100 миллионов раз. load data infile будет намного быстрее!

см. здесь - http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Вам действительно нужен первичный ключ без знака bigint (8 байт) против целого числа без знака (4 байта) с максимальным значением 4294967295 (4 миллиарда)

см. здесь - http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

просто мысли...

  • 0
    если я делаю нагрузку infile, как это будет сравниваться, когда нагрузка снова и снова переходит от вставок базы данных к вводу / выводу записи и чтения созданного CSV? Я предложил это же действие другому разработчику, и он сказал, что изначально было много проблем с производительностью со стороны ввода / вывода ... спасибо!
  • 0
    Создание CSV-файла с 100 миллионами строк ++ не займет много времени, но вы можете разбить его на 10 файлов, скажем, по 10 миллионов строк, а затем использовать файл данных загрузки для загрузки каждого из них по отдельности. Я полагаю, что ваш текущий метод загрузки занимает несколько часов, если не больше. Используя ваше приложение для генерации 1 или более файлов .csv, а затем для массовой загрузки, все будет сделано за 20 минут. Несколько полезных советов здесь pastie.org/1348793 - надеюсь, это поможет.
Показать ещё 4 комментария
0

Вы уверены, что в нем нет MEDIUMINT? Запустите show create table в таблице, которая показывает эту проблему.

  • 0
    Вот результаты этого разделения на 2 комментария:
  • 0
    метрики | metrics CREATE TABLE ( classification int (11) по умолчанию NULL, edit_distance int (11) по умолчанию NULL, edit_goodness float по умолчанию NULL, shorter_name_len int (11) по умолчанию NULL, spatial_distance float (30,2) по умолчанию NULL, spatial_precision_deg float (30,5) по умолчанию NULL , spatial_goodness float (30,5) по умолчанию NULL,
Показать ещё 14 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню