2017-06-29 12 views
0

イメージをデータベースに保存するために、現在のカラムタイプがTEXTなので、イメージを格納しようとすると文字列が長すぎるというエラーがスローされます。構文エラーまたはアクセス違反:1253 COLLATION 「utf8mb4_unicode_ciは、」文字セットに対して有効ではありません私は、マイグレーションを実行したときだから私は、移行にlaravel 5.4バイナリタイプのデータベースの文字セットと照合

Schema::table('pages', function (Blueprint $table) { 
     $table->binary('extras')->change(); 
    }); 

を作成し、それは誤り

SQLSTATE [42000]を投げます'バイナリ'(SQL: ALTER TABLEのページはBのLOBのDEFAULT NULL COLLATE utf8mb4_unicode_ciエクストラエキストラを変更)デフォルトの照合と茶を使用して

イムconfig.databaseのrset

 'charset' => 'utf8mb4', 
     'collation' => 'utf8mb4_unicode_ci', 

これらはblob形式をサポートしていませんか?これが正しい設定でない場合、私はユニコードまたは絵文字のサポートを必要としません。

私は、MySQL V5.7を使用しています

答えて

0

Schema::table('portfolio', function (Blueprint $table) { 
      $table->dropColumn('image'); 
     }); 

     Schema::table('portfolio', function (Blueprint $table) { 
      $table->charset = 'utf8_bin'; 
      DB::statement("ALTER TABLE `portfolio` ADD `square_image` LONGBLOB"); 
      DB::statement("ALTER TABLE `portfolio` ADD `portfolio_image` LONGBLOB"); 
     }); 
0

LONGTEXTタイプを使用してみてください:

$table->longText('extras'); 

私の唯一のアドバイスは、彼らが減速のために知っているので、自分自身にあなたのテーブルからBLOB型を分離することwouleクエリ。 onlyway行うに

+0

長いテキストがまだbase64で画像を保存するのに十分な長さではありませんように、それは、画像キャッシュ用のバックグラウンドジョブの火災のみ永続ストアの列を削除し、生のSQLクエリを使用することですキャッシュを暖かくして速度が問題にならないようにするには、カラムを削除してraw SQLを使用してlongblobタイプを作成する方法があります –

関連する問題