2016-11-29 163 views
-1

請幫忙解決這個...行大小太大

行大小太大。所用表類型的最大行大小(不包括BLOB)爲65535.這包括存儲開銷,請查看手冊。你必須改變一些列的文字或BLOB的

這是表我想創建

CREATE TABLE IF NOT EXISTS client_details (
id BIGINT AUTO_INCREMENT PRIMARY KEY, 
client_description VARCHAR(1024), 
reuse_refresh_tokens BOOLEAN DEFAULT true NOT NULL, 
dynamically_registered BOOLEAN DEFAULT false NOT NULL, 
allow_introspection BOOLEAN DEFAULT false NOT NULL, 
id_token_validity_seconds BIGINT DEFAULT 600 NOT NULL, 
client_id VARCHAR(256), 
client_secret VARCHAR(2048), 
access_token_validity_seconds BIGINT, 
refresh_token_validity_seconds BIGINT, 

application_type VARCHAR(256), 
    client_name VARCHAR(256), 
token_endpoint_auth_method VARCHAR(256), 
subject_type VARCHAR(256), 

logo_uri VARCHAR(2048), 
policy_uri VARCHAR(2048), 
client_uri VARCHAR(2048), 
tos_uri VARCHAR(2048), 

jwks_uri VARCHAR(2048), 
jwks VARCHAR(8192), 
sector_identifier_uri VARCHAR(2048), 

request_object_signing_alg VARCHAR(256), 
user_info_signed_response_alg VARCHAR(256), 
user_info_encrypted_response_alg VARCHAR(256), 
user_info_encrypted_response_enc VARCHAR(256), 

id_token_signed_response_alg VARCHAR(256), 
id_token_encrypted_response_alg VARCHAR(256), 
id_token_encrypted_response_enc VARCHAR(256), 
token_endpoint_auth_signing_alg VARCHAR(256), 

default_max_age BIGINT, 
require_auth_time BOOLEAN, 
created_at TIMESTAMP NULL, 
initiate_login_uri VARCHAR(2048), 
clear_access_tokens_on_refresh BOOLEAN DEFAULT true NOT NULL, 

UNIQUE (client_id) 
); 
+0

行大小太大=數據庫未規範化 – e4c5

回答

0

這是一個很多是很早以前的VARCHAR處理列。你真的需要他們這麼久嗎?

不管怎樣,我想你的SQL語句,它爲我工作得很好。

不同的是,我已經設置:

innodb_file_per_table=ON 
innodb_default_row_format=dynamic 

根據您的MySQL版本,你可能還需要設置:

innodb_file_format=Barracuda 

這些選項改變方式的InnoDB存儲VARCHAR,BLOB,和TEXT列,將更多內容從行的主頁移出,並移動到額外的頁面上。這最終可以讓你定義更多的列。