2016-06-14 8 views
1

私は最近、MySQLからPostgreSQLに移行しました。 私は自分のアプリケーションでCarbon::のグローバル検索をした、私はこのエラーCarbon.php行のInvalidArgumentException 425:末尾のデータ

InvalidArgumentException in Carbon.php line 425: 
Trailing data 

を取得保管気づきました。私は15のファイルにわたって47の一致を見つけました。

これらのファイルをすべて変更することなくこのエラーを修正する方法を教えてください。


ddは()私のオブジェクトは、これは私はそれはあなたが思うまさに何

Capture {#412 ▼ 
    #table: "captures" 
    #connection: null 
    #primaryKey: "id" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:6 [▼ 
    "id" => 65 
    "type" => "cpe" 
    "cpe_mac" => "000D6721A5EE" 
    "device_mac" => null 
    "created_at" => "2016-05-03 11:20:10-04" 
    "updated_at" => "2016-05-03 11:20:10-04" 
    ] 

    .... 
+0

マイグレーションしたMySQLのバージョンはどれですか?タイムスタンプフィールドは、異なるMySQLストレージエンジン間で異なるストレージ値を持ち、PostgreSQLとは異なります。ソース:状況のせいでMySQL 5.7からMySQL 5.5への移行が必要でしたし、同じことを経験しました。 5.7のタイムスタンプもミリ秒を節約していたことが分かります。 –

答えて

3

を得たものです。ここでの問題は、PostgreSQLtimestamp列が、実際にはmilisecondsを含む異なるタイムスタンプ形式を期待していることです。 'Y-m-d H:i:s.u'であり、Carbonのデフォルト形式とMySQLのタイムスタンプ列は、ちょうど'Y-m-d H:i:sです。この問題を解決するために、あなたはあなたのtimestamp列であなたの文字列の一部としてタイムゾーンを保存したくないというのPostgreSQLを伝える:

ALTER TABLE {tablename} ALTER updated_at SET DATA TYPE timestamp(0) without time zone; 

をあなたが持っているすべてのテーブルとすべての列のためにこれを行う必要がありますタイムスタンプ

+0

データベース全体をどのように変更できますか?私は約10のテーブルを持っています。お知らせ下さい。 – ihue

+0

@ihueちょうど1つずつ実行してください。それらを 'migrations'として保存し、それらの中で' rawSQL'を実行してください。この方法で将来の環境でも 'php artisan migrate'を行うことができます。 – Ohgodwhy

+0

私は何を私の下に置くべきですか? DB :: statement( 'ALTER TABLEクラウド・セキュリティALTER updated_atタイム・スタンプ付きのデータ・タイプ・タイムスタンプ(0);'); '? – ihue

関連する問題