2017-12-05 1 views
0

次のmysqlクエリを使用してデータベースにテーブルを作成しようとしています。しかし、私はいくつかの行サイズのエラーを取得しています。テーブル作成時のMYSQLバージョン5.7の行サイズエラーはどのように解決できますか?

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)); 

エラー:

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

質問にもっと注意を払うためにすべての可能なタグを使用しないでください。非mysqlをすべて削除します – SchmitzIT

+0

行ごとに65,535バイトを超えるテーブルを作成しないことで、この問題を解決できます。テーブル定義には、多くの 'varchar(2000)'と 'varchar(150)の列があります。あなたは本当に1つのテーブルにたくさんのテキストを格納する必要がありますか?この設定ではテーブルが何も実行されないため、列のデータ型を確認してください。 – SchmitzIT

答えて

0

が列にわたって配列をスプレイしないでください。

たとえば、10の属性を許可しています。あなたは11が必要なときに何をすべきか考えましたか? 10列の代わりに、PJC_TXN_XFACE_STAGE_ALLの任意の数の属性を持つ別のテーブルを用意してください。

同義語costsと多分他のもの。

日付は私がの例を参照してくださいVARCHAR(100)

DATEデータ型にすべきではないnumbernameid - それらはここだけidと、別のテーブルにすべきではありませんか?

DOUBLEは、まれにIDの良いデータ型です。 IDsの外観は何ですか?

となります。適切な場合はNOT NULLとなります。

制限に収まるようにスキーマを縮小しない場合は、新しいCREATE TABLEを見てみましょう。さらに修正を探すことができます。 (私がまだ触れていない他のテクニックがあります)

関連する問題