行大小太大

行大小太大

问题描述:

请帮忙解决这个...行大小太大

行大小太大。所用表类型的最大行大小(不包括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

这是一个很多是很早以前的VARCHAR处理列。你真的需要他们这么久吗?

不管怎样,我想你的SQL语句,它为我工作得很好。

不同的是,我已经设置:

innodb_file_per_table=ON 
innodb_default_row_format=dynamic 

根据您的MySQL版本,你可能还需要设置:

innodb_file_format=Barracuda 

这些选项改变方式的InnoDB存储VARCHAR,BLOB,和TEXT列,将更多内容从行的主页移出,并移动到额外的页面上。这最终可以让你定义更多的列。