行大小太大
问题描述:
请帮忙解决这个...行大小太大
行大小太大。所用表类型的最大行大小(不包括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)
);
答
这是一个很多是很早以前的VARCHAR处理列。你真的需要他们这么久吗?
不管怎样,我想你的SQL语句,它为我工作得很好。
不同的是,我已经设置:
innodb_file_per_table=ON
innodb_default_row_format=dynamic
根据您的MySQL版本,你可能还需要设置:
innodb_file_format=Barracuda
这些选项改变方式的InnoDB存储VARCHAR,BLOB,和TEXT列,将更多内容从行的主页移出,并移动到额外的页面上。这最终可以让你定义更多的列。
行大小太大=数据库未规范化 – e4c5