Я постоянно получаю эту ошибку ( Код ошибки: 1034. Неверный файл ключа для таблицы '/ rdsdbdata / tmp / # sql_1709_0'; попытаться исправить ее ) в Amazon Web Services (AWS) Aurora MySQL 5.7когда я запускаю следующую инструкцию INSERT (или запускаю инструкцию SELECT в инструкции INSERT как отдельную инструкцию SELECT).
Что мне нужно изменить в операторе INSERT (или экземпляре AWS Aurora MySQL 5.7 или других компонентах экосистемы AWS), чтобы я не получил эту ошибку?(Меня не интересует, как восстановить временную таблицу, на которую ссылается сообщение об ошибке. Во-первых, я хочу избежать появления ошибки, поскольку этот оператор INSERT будет работать как часть более крупного сценария).
Оператор INSERT выглядит следующим образом:
INSERT INTO GEO_AREA ( Geo_Area_Nm, Geo_Area_Abrv, Geo_Area_Full_Qualfd_Nm, Geo_Area_Full_Qualfd_Abrv,
Geo_Area_Typ_CK, Geo_Area_Prim_ID, Last_Modfd_By_ID, Crtd_By_ID
)
SELECT
Concat("Precinct ", S.PrecinctNumber) AS Geo_Area_Nm, -- The plain Precinct identifier, preceded by the word "Precinct",
-- without any county or state information added.
S.PrecinctNumber AS Geo_Area_Abrv, -- The plain Precinct identifier without any county or state information added.
Concat(S.Jurisname, ", ", STATE.Geo_Area_Nm," - Precinct: ",
S.PrecinctNumber) AS Geo_Area_Full_Qualfd_Nm, -- [Elector Jurisdiction name, State Name:] Precinct: [Precinct ID]
Concat(S.Jurisname, ", ", STATE.Geo_Area_Abrv," - Prcnct: ",
S.PrecinctNumber) AS Geo_Area_Full_Qualfd_Nm, -- [Elector Jurisdiction name, State Name:] Precinct: [Precinct ID]
@Prcnct_CK AS Geo_Area_Typ_CK, -- => Precinct
Concat("US-", S.State, "-",S.Juriscode, "-Prcnct:", S.PrecinctNumber) AS Geo_Area_Prim_ID,
-- Example: US-WY-5602100000-Prcnct:3 08
Max(Concat("DTVF-", S.SourceID)) As Last_Modfd_By_ID,
Max(Concat("DTVF-", S.SourceID)) As Crtd_By_ID
FROM VW_STG_DATA_TRUST_VOTR_INSERT S
LEFT JOIN GEO_AREA STATE -- STATE is the source of the State name and abbreviation that was loaded in Initial LOAD
ON Concat('US-',S.State) = STATE.Geo_Area_Prim_ID
LEFT JOIN GEO_AREA EXIST_GA -- EXIST_GA is the set of records in GEO_AREA before this insert
ON Concat("US-", S.State, "-",S.Juriscode, "-Prcnct:", S.PrecinctNumber) = EXIST_GA.Geo_Area_Prim_ID
WHERE STATE.Geo_Area_Typ_CK = @State_CK -- => Connection for US State level info
-- AND Concat(S.JurisName, ", ", STATE.Geo_Area_Nm) = 'Abbotsford City, Wisconsin'
AND EXIST_GA.Geo_Area_Prim_ID IS NULL
GROUP BY 1,2,3,4,5,6
;
Я предпринял следующие шаги, чтобы попытаться исправить проблему, ни одна из которых не сработала:
⦁ Удаление и повторное создание целевой таблицы (GEO_AREA) в том же экземпляре базы данных AWS Aurora MySQL.
⦁ Остановка и перезапуск экземпляра RDS.
⦁ Создание новогоЭкземпляр базы данных AWS Aurora MySQL 5.7 (wpai-archimedes-dev-dbi) и создание и загрузка в него довольно небольшого набора таблиц и представлений (включая те, которые необходимы для поддержки этого оператора INSERT).Поэтому я не думаю, что это проблема дискового пространства.
Справочная информация:
⦁ Этот оператор INSERT (и оператор SELECT внутри него) получают данные избольшая промежуточная таблица / представление, которое содержит одну строку на человека / избирателя и пытается загрузить одну строку на каждый [Электоральный] участок в таблицу географической области (GEO_AREA).В промежуточной таблице / представлении может быть много строк, в которых содержатся избиратели в одном избирательном участке.
⦁ У меня есть два одинаково структурированных оператора INSERT, которые загружают по одной строке для каждого округа, и систему Electoral Jurisdiction в таблицу GEO_AREA.Эти два оператора вставки работают правильно (без ошибок).Пример оператора вставки, который правильно загружает графы, находится в нижней части описания этого случая.
⦁ После получения этой ошибки я все еще могу выполнить другие запросы SQL к таблице GEO_AREA без получения ошибки, например,
SELECT * FROM GEO_AREA WHERE Geo_Area_Typ_CK in (252, 255) order by 6 desc, 4;
⦁ Строки для географических областей на уровне страны и штата / провинции загружаются в GEO_AREA из файла .csv на моем ноутбуке с помощью команды LOAD DATA LOCAL INFILE.
⦁ Я пробовалэтот оператор INSERT в двух отдельных экземплярах базы данных Aurora MySQL.Тип экземпляра в обоих случаях - db.r4.xlarge.Первый экземпляр БД (экземпляр, на который ссылается этот случай технической поддержки) был загружен из файла .csv объемом 1,002 ГБ (случайная выборка из 1 млн. Записей избирателей из всех 50 штатов США), которая в настоящее время использует 1,333 ГБ дискового пространства во всехтаблицы и показывает (в результатах снимка, сделанного сегодня утром), что экземпляр использует 1 ГБ дискового пространства.Второй экземпляр был загружен из файла CSV объемом 4,623 ГБ (записи 4M, описывающего всех избирателей в штате Теннесси), который в настоящее время использует 3,727 ГБ дискового пространства во всех таблицах, и показывает (опять же, результаты из снимка, сделанного этим утром) что экземпляр использует 7 ГБ дискового пространства.