programing

잘못된 날짜/시간 형식: 1366 잘못된 문자열 값

newsource 2022. 10. 27. 21:52

잘못된 날짜/시간 형식: 1366 잘못된 문자열 값

다음 오류가 나타납니다.

SQLSTATE [22007]:잘못된 날짜/시간 형식: 1366 행 1의 'column-name' 열에 대한 잘못된 문자열 값: '\xBD Inch...'

my database, table 및 column의 형식은 utf8mb4_unicode_ci이며 column-name은 text형이고 NULL형입니다.

이것은 열 이름의 값입니다.

[column-name] => 11 ▒ 이전 텍스트와 이후 텍스트가 있습니다.

그러나 값은 쉼표(,)로 구분되어 있기 때문에 larabel이 열의 값에 따옴표를 추가할 때까지 기다립니다.다음과 같습니다.

[column-name] => '11 ▒ 이전 텍스트와 이후 텍스트가 있습니다.'

아래 스키마를 참조해 주세요.

    Schema::create('mws_orders', function (Blueprint $table) {
        $table->string('custom-id');
        $table->string('name');
        $table->string('description')->nullable();
        $table->string('comment')->nullable();
        $table->integer('count')->nullable();
        $table->text('column-name')->nullable();
        $table->timestamps();

        $table->primary('custom-id');
    });

구글에서 찾고 있지만 아직 해결방법은 없습니다.

이 문제를 해결할 방법을 아는 사람?

Larabel 5.5와 MariaDB 10.2.11을 사용하고 있습니다.

이 에러를 발생시킨 모든 문자열 열을 uft-8로 인코딩하여 해결했습니다.예를 들어 오류가 발생한 열은 column-name으로 show bellow로 인코딩했습니다.또, 같은 에러의 다른 칼럼을 발견해, 이 솔루션도 사용했습니다.

$data [
//key=>values 
];

$myModel = new MyModel(); 

$data['column-name'] = DB::connection()->getPdo()->quote(utf8_encode($data['column-name']));

$myModel->insert($data); 

Larabel 5.5와 MariaDB 10.2에서도 비슷한 문제가 발생했습니다.일부 사용자 입력 t를 varchar 열에 저장하는 경우 예외:

SQLSTATE [22007]:잘못된 날짜/시간 형식: 1366 행 1의 'comment' 열의 문자열 값 '\xE2\x80\x86y\xE2\x80...'이 잘못되었습니다.

던져질 것이다.

이것은 스테이지 서버에서만 발생하고 로컬 개발 서버에서는 발생하지 않았기 때문에 밑줄 테이블의 대조와 문자 집합을 비교한 결과, 스테이지 서버의 데이터베이스와 테이블은 latin1을 사용하고 로컬 개발 서버는 utf8mb4를 사용하고 있는 것으로 나타났습니다.

이 문제는 데이터베이스와 테이블의 대조와 문자 설정을 utf8mb4 및 utf8mb4_unicode_ci로 변경하여 해결되었습니다.

ALTER DATABASE <db_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

이 문제에 직면한 사람은 데이터베이스와 테이블의 조합과 문자 집합을 확인하십시오.Laravel 앱이 utf8로 인코딩하는 동안 데이터베이스가 다른 것을 사용할 수 있습니다.

mb-convert-encoding 또는 utf8-encode로 이 문제가 해결되지 않는 경우 멀티바이트 배리언트 내에서 문자열 함수만 사용하고 있는지 확인하십시오.

예:substr를 사용해야 합니다.mb_substr

문서 참조: 멀티바이트 문자열 함수

같은 문제가 발생할 수 있는 미래의 독자들을 위해 쓴 글입니다:)

BD는 latin1(라틴1)의 부호화 기타 여러 개입니다.½(2월 1일)에러 메세지는, 그것을 날짜/시간내에 보존하는 것을 나타내고 있습니다.적어도 두 오류가 있는 것 같아요. - 아, 아, 아, 아, 에러2는 에러가 나다.

  • 「」의 불일치CHARACTER SETs
  • 서투른 질의

은 우리에게 그 일에 어떤 주세요.CREATE TABLE지사사사사사가가사가가가가가가가가가?

데이터베이스 구성(charset 및 대조)을 변경하는 것만으로

설정/삭제php

대상:

'connections' => [
        'mydb' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST'),
            'database' => env('DB_DATABASE'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'charset'   => 'utf8mb4',              // **for emoticons**
            'collation' => 'utf8mb4_unicode_ci',   // **for emoticons**
        ],
]

문제를 해결하려면 다음 단계를 따릅니다.

1-캐릭터 변경 및 COLATE

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

2-change config / php 파일

 'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',//****make sure these configs are set
        'collation' => 'utf8mb4_unicode_ci',//****make sure these configs are set
        'prefix' => '',
        'strict' => true,
        'engine' => null,
     
    ],

3 - 이 명령어를 실행하여 설정 캐시를 재생성합니다.

php artisan config:cache

언급URL : https://stackoverflow.com/questions/48270374/invalid-datetime-format-1366-incorrect-string-value