【CakePHP】OracleのODBCドライバでtimestamp型でハマったこと

cakephpのログイン認証ではまったことをメモ。

cakephp1.3で起きた事象なので古すぎて需要は少ないかもしれませんが、
自分みたく昔からのシステムを保守している人に向けて記載します。

事象

linuxの開発環境では正常にログイン可能なのに、Windowsのローカル環境を構築してみたらどうしてもログインできない事象が発生。

各システムのバージョンは以下の通りです。

バージョン関連

  •   CakePHP 1.3.14
  •   XAMPP 1.7.3
         Apache 2.2.14
         PHP 5.3.1
  •   Oracle 
 

上記の内容をローカル上で構築し、DBへは開発環境のoracleに接続する仕組みで設定しました。

しかしログインの画面は開きますが、どうしても認証が通ってくれません。
ログの内容やCakePHPのコアプログラムをいろいろ掘り下げてみると、
どうやら認証処理で使ってる日付の型変換で落ちているが分かりました。
oracleのエラーで「ORA-01843: not a valid month」と見慣れないエラーが
出ています。

直訳すると「指定した月は無効です」ということらしいですが、SQLを出力してみてもちゃんと日付は設定されています。

 

さらに調査した結果以下の記事を見つけました。

https://docs.microsoft.com/ja-jp/sql/odbc/microsoft/setting-the-date-format-on-connection?view=sql-server-2017

どうやらWindowsのOracle用ODBCドライバは、timestamp型を自動で変換してくれないみたいです^^;。

普段MySQLを使い慣れているせいか、型変換もやってくれると思っていました。
結局timestamp型で設定しているカラムに対し、文字列の日付を当てに行ってエラーになってみたいです。

現状の解決策としては、テーブルのカラムをDate型に変えることが一番賢明でしょうか。でも、それは影響範囲がデカそうで大変です><;。



投稿日:2018-09-05    更新日:2018-09-05

[スポンサーリンク]

[スポンサーリンク]

  
関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : POCO(@PocoIt2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

カテゴリ


タグ

[スポンサーリンク]

最近の記事