source

mysql 테이블 생성 쿼리에서 행 크기가 너무 큽니다.

factcode 2022. 9. 8. 21:49
반응형

mysql 테이블 생성 쿼리에서 행 크기가 너무 큽니다.

아래 쿼리로 테이블을 생성하려고 합니다.

Create Table PerformaceReport
(
campaignID int,
keywordID bigint,
keyword varchar(8000),
avgPosition decimal(18,6),
cost int,
clicks int,
 conv1PerClick int, 
 impressions int,
  day datetime,
  currency varchar(8000),
  account varchar(8000),
   timeZone varchar(8000),
    adGroup varchar(8000),
    adGroupState varchar(8000),
     approvalStatus varchar(8000),
     lowestPosition varchar(8000),
     campaign varchar(8000),
      campaignState varchar(8000),
       convManyPerClick int,
       totalConvValue decimal(18,6),
        maxCPCSource varchar(8000),
         clientName varchar(8000),
          destinationURL varchar(8000),
           device varchar(8000),
           firstPageCPC int,
            isNegative bit,
             matchType varchar(8000),
              maxCPC varchar(8000),
               maxCPM varchar(8000),
               highestPosition varchar(8000),
               qualityScore int,
               keywordState varchar(8000),
               viewThroughConv int)

그리고 나는 아래의 오류를 받고 있다.

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

이 에러를 회피하고 쿼리를 실행하여 테이블을 작성할 수 있도록 하는 방법을 알려 주십시오.

표의 모든 필드의 총 크기가 제한 65535를 초과하기 때문에 이 오류가 발생합니다.

를 사용해 주세요.text대신 타이핑하다varchar긴 끈을 위해.모두 치환varchar(8000)와 함께text작동해야 합니다.

또한 너무 큰 데이터 유형 대신 적절한 데이터 유형을 사용하는 것이 좋습니다.저장에 8000자는 필요 없습니다.currency,그러니?

사용하다TEXT대신VARCHAR최대 행 크기를 초과했기 때문입니다.사용한다면TEXT큰 텍스트 열용입니다.최대 크기varchar65535입니다. 다음을 사용하여 열을 만듭니다.varchar(65535)테이블에서 유일한 열이어야 합니다.

또는

문제는 innodb 테이블의 행 크기 제한입니다.아래 링크에서는 이 문제를 해결하기 위한 몇 가지 방법을 찾을 수 있습니다.

http://www.mysqlperformanceblog.com/2011/04/07/innodb-row-size-limitation/ https://dba.stackexchange.com/questions/6598/innodb-create-table-error-row-size-too-large

65535 바이트는 mysql의 최대 행 크기입니다.

utf8mb4 charset에서 varchar(255)는 이 컬럼의 최대 사용처를 나타냅니다.255 * 4 + 1바이트입니다.따라서 어떤 charset 테이블을 사용하는지에 따라 달라집니다.

첫 번째 단계로 적절한 크기의 컬럼과 TEXT over VARCHAR을 사용하는 것에 대한 답변에 동의합니다만, 그래도 한계에 도달한 경우 UTF-8 또는 1글자당 바이트가 넘는 다른 문자 세트를 사용하고 있고 필요하지 않은 경우(예를 들어 영어 텍스트만 저장) 해당 테이블의 대조 설정을 변경할 수 있습니다.나는 네가 매우 넓은 테이블을 위해 치고 있는 한계를 벗어나기 위해 이렇게 했다.좀 더 자세히 설명해 주세요.

utf8과 latin1의 차이점

이 문제는 라라벨에서 발생했고 저는 varchar 대신 문자를 사용했습니다.

10.4.17-MariaDB MariaDB Server를 사용하여 MariaDB 서버 설정 파일(/etc/my.cnf.d/server.cnf에 있음)을 편집하고 다음 두 줄을 추가했습니다.

innodb_log_file_size=innodb_log_file_sizeM

innodb_mod_mode=0

  • 모든 테이블(스토리지 엔진에 관계없이)의 최대 행 크기는 65,535바이트입니다.스토리지 엔진은 이 제한에 추가 제약을 가하여 유효 최대 행 크기를 줄일 수 있습니다.
  • BLOB 및 TEXT 열은 내용이 나머지 행과 별도로 저장되므로 행 크기 제한에 대해 각각1 ~ 4 + 8 바이트로 카운트됩니다.
  • 상세 정보 - 표 열 수 및 행 크기에 대한 제한

스토리지 엔진을 CSV로 변경해 보십시오.

언급URL : https://stackoverflow.com/questions/13283381/row-size-too-large-error-in-mysql-create-table-query

반응형