2017-12-05 5 views
0

Ich versuche, eine Tabelle in meiner Datenbank zu erstellen, die die folgende mysql-Abfrage verwendet. Aber ich bekomme einen Zeilengrößenfehler.Wie kann der Zeilengrößenfehler in MYSQL Version 5.7 zum Zeitpunkt der Tabellenerstellung behoben werden?

create table PJC_TXN_XFACE_STAGE_ALL (rowid int AUTO_INCREMENT,error_flag varchar(50),error_message varchar(500),Transaction_Type VARCHAR(100), 
Business_Unit_Name VARCHAR(2), 
Business_Unit_ID double, 
Transaction_Source VARCHAR(240), 
Transaction_Source_ID double, 
Document VARCHAR(240), 
Document_ID double, 
Document_Entry VARCHAR(240), 
Document_Entry_ID double, 
Expenditure_Batch VARCHAR(50), 
Batch_Ending_Date VARCHAR(100), 
Batch_Description VARCHAR(250), 
Expenditure_Item_Date VARCHAR(100), 
Person_Number VARCHAR(30), 
Person_Name VARCHAR(2000), 
Person_ID double, 
Human_Resources_Assignment VARCHAR(80), 
Human_Resources_Assignment_ID double, 
Project_Number VARCHAR(25), 
Project_Name VARCHAR(240), 
Project_ID double, 
Task_Number VARCHAR(100), 
Task_Name VARCHAR(255), 
Task_ID double, 
Expenditure_Type VARCHAR(240), 
Expenditure_Type_ID double, 
Expenditure_Organization VARCHAR(240), 
Expenditure_Organization_ID double, 
Quantity double, 
Unit_of_Measure VARCHAR(80), 
Unit_of_Measure_Code VARCHAR(30), 
Work_Type VARCHAR(240), 
Work_Type_ID double, 
Billable VARCHAR(1), 
Capitalizable VARCHAR(1), 
Accrual_Batch VARCHAR(1), 
Original_Transaction_Reference VARCHAR(120), 
Unmatched_Negative_Transaction VARCHAR(1), 
Reversed_Original_Transaction VARCHAR(120), 
Expenditure_Item_Comment VARCHAR(240), 
Accounting_Date VARCHAR(100), 
Transaction_Currency_Code VARCHAR(15), 
Transaction_Currency VARCHAR(80), 
Raw_Cost_in_Transaction_Currency double, 
Burdened_Cost_in_Transaction_Currency double, 
Raw_Cost_Credit_CCID double, 
Raw_Cost_Credit_Account VARCHAR(2000), 
Raw_Cost_Debit_CCID double, 
Raw_Cost_Debit_Account VARCHAR(2000), 
Burdened_Cost_Credit_CCID double, 
Burdened_Cost_Credit_Account VARCHAR(2000), 
Burdened_Cost_Debit_CCID double, 
Burdened_Cost_Debit_Account VARCHAR(2000), 
Burden_Cost_Credit_CCID double, 
Burden_Cost_Credit_Account VARCHAR(2000), 
Burden_Cost_Debit_CCID double, 
Burden_Cost_Debit_Account VARCHAR(2000), 
Provider_Ledger_Currency_Code VARCHAR(15), 
Provider_Ledger_Currency VARCHAR(80), 
Raw_Cost_in_Provider_Ledger_Currency double, 
Burdened_Cost_in_Provider_Ledger_Currency double, 
Provider_Ledger_Conversion_Rate_Type VARCHAR(30), 
Provider_Ledger_Conversion_Rate_Date VARCHAR(100), 
Provider_Ledger_Conversion_Date_Type VARCHAR(4), 
Provider_Ledger_Currency_Conversion_Rate double, 
Provider_Ledger_Currency_Conversion_Rounding_Limit double, 
Converted VARCHAR(1), 
Context_Category VARCHAR(40), 
User_Defined_Attribute_1 VARCHAR(150), 
User_Defined_Attribute_2 VARCHAR(150), 
User_Defined_Attribute_3 VARCHAR(150), 
User_Defined_Attribute_4 VARCHAR(150), 
User_Defined_Attribute_5 VARCHAR(150), 
User_Defined_Attribute_6 VARCHAR(150), 
User_Defined_Attribute_7 VARCHAR(150), 
User_Defined_Attribute_8 VARCHAR(150), 
User_Defined_Attribute_9 VARCHAR(150), 
User_Defined_Attribute_10 VARCHAR(150), 
Reserved_Attribute_1 VARCHAR(150), 
Reserved_Attribute_2 VARCHAR(150), 
Reserved_Attribute_3 VARCHAR(150), 
Reserved_Attribute_4 VARCHAR(150), 
Reserved_Attribute_5 VARCHAR(150), 
Reserved_Attribute_6 VARCHAR(150), 
Reserved_Attribute_7 VARCHAR(150), 
Reserved_Attribute_8 VARCHAR(150), 
Reserved_Attribute_9 VARCHAR(150), 
Reserved_Attribute_10 VARCHAR(150), 
Attribute_Category VARCHAR(30), 
Attribute_1 VARCHAR(150), 
Attribute_2 VARCHAR(150), 
Attribute_3 VARCHAR(150), 
Attribute_4 VARCHAR(150), 
Attribute_5 VARCHAR(150), 
Attribute_6 VARCHAR(150), 
Attribute_7 VARCHAR(150), 
Attribute_8 VARCHAR(150), 
Attribute_9 VARCHAR(150), 
Attribute_10 VARCHAR(150), 
PRIMARY KEY(rowid)); 

Fehler:

Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

+0

Bitte verwenden Sie nicht alle möglichen Tags, um mehr Aufmerksamkeit auf die Frage zu bekommen. Ich werde alles entfernen, nicht-mysql – SchmitzIT

+0

Sie können das Problem lösen, indem Sie keine Tabellen erstellen, die 65.535 Bytes pro Zeile überschreiten. Sie haben zahlreiche 'varchar (2000)' - und 'varchar (150) -Spalten in der Tabellendefinition. Müssen Sie * wirklich * so viel Text in einer Tabelle speichern? Überprüfen Sie die Datentypen Ihrer Spalten, da Ihre Tabelle mit dieser Konfiguration nicht funktioniert. – SchmitzIT

Antwort

0

Sie nicht ein Array über mehrere Spalten spreizen.

Zum Beispiel erlauben Sie 10 Attribute. Hast du darüber nachgedacht, was du tun musst, wenn du 11 brauchst? Anstatt 10 Spalten haben Sie eine separate Tabelle mit einer beliebigen Anzahl von Attributen für jede PJC_TXN_XFACE_STAGE_ALL.

Dito für costs und vielleicht andere Dinge.

Daten sollten in DATE Datentyp sein, nicht VARCHAR(100)

ich Fälle von number finden name, id - sollten diejenigen, die nicht in einer anderen Tabelle sein, wobei nur die id hier?

Die 8-Byte DOUBLE ist selten ein guter Datentyp für eine ID. Wie sieht die IDs aus?

Sagen Sie NOT NULL, wo angemessen.

Wenn das nicht das Schema schrumpft genug, um in die Begrenzung zu passen; Lass uns die neue CREATE TABLE sehen und wir können nach weiteren Fixes suchen. (Es gibt andere Techniken, die ich noch erwähnen muss.)

Verwandte Themen