メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのhook_schema()で文字照合の指定はできない(UTF8に固定されている)

Drupalのhook_schema()で文字照合の指定はできない(UTF8に固定されている)

drupal
development
drupal
mysql

問題点:カスタムモジュールでデータ作成時にエラーが発生:  Invalid datetime format: 1366 Incorrect string value: '\xE5\xAE\x89\xE7\x9D\xA1'

  • カスタムモジュール内でdb_insert()関数でカスタムテーブルにデータを挿入します
  • データ挿入がうまくかないので、サイトのレポート(ホーム » 管理 » レポート)を確認したら、DBエラーが発生: PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xE5\xAE\x89\xE7\x9D\xA1' for column 'vocabulary' at row 1: 。。。
  • 文字化け現象のようで、テーブルの文字セットを確認してみたら、やはり文字セットがUTF8ではなかったです(DrupalはUTF8に指定している)
    カスタムテーブルの文字照合設定が間違っていたためdb_insert()でデータ挿入時にエラー

原因:手動でカスタムテーブル作成時に文字照合設定を初期値のままでしたせい

  • 今回のテーブルはカスタムモジュールのインストールファイルにあるhook_schema()の定義で生成したものではなく、手動で作成したものでした。
    • すでにカスタムモジュールがインストール/有効化の状態で、カスタムテーブルはあとで追加したものです
    • 手動でテーブルを作成時に、文字照合設定は行わずに、初期値のままで作成しました
  • 今度手動でテーブルを作成時に、文字照合設定は忘れではいけないですね

Drupalのhook_schema()ではテーブルの文字照合設定はありません

  • hook_schema()の文字照合設定項目はありません
  • テーブルの文字照合初期設定はUTF8を指定しているようです
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)