2017-09-18 39 views
0

我試圖從character varying (10)列類型更改爲一個日期。xmldb_field Moodle的變化列類型

我可以像這樣單獨運行:

ALTER TABLE "tbl_name" ALTER "col_name" TYPE timestamp USING (col_name ::timestamp); 

但扔進upgrade.php腳本此之後,它barfs我和要求USING條款,我似乎無法去上班。或者,如果有,甚至是一種方式......

這裏是我的upgrade.php腳本:

$table = new xmldb_table('tbl_name'); 
$field = new xmldb_field('col_name', XMLDB_TYPE_DATETIME); 
if ($dbman->field_exists($table, $field)) { 
    $dbman->change_field_notnull($table, $field); 
} 

當登錄到Moodle的管理和運行更新,我得到以下錯誤:

ERROR: column "col_name" cannot be cast automatically to type timestamp without time zone HINT: You might need to specify "USING col_name::timestamp without time zone". 

任何想法?

謝謝!

回答

0

正如Moodle文檔指出(https://docs.moodle.org/dev/XMLDB_column_types),你應該避免使用日期時間字段 - 在Moodle中所有時間戳被聲明爲整數(10)。

如果你使用內置的Moodle的XMLDB編輯器來生成數據庫表定義(和你真的應該這樣做),那麼它不會給使用日期時間字段類型的選項。

+0

謝謝。我肯定是Moodle noob,並且在發佈^^上面大約10分鐘後,從字面上找到了相同的頁面。此外...我發現/記憶/砸到我前進的時候,我明白了該應用程序基本上就是把所有數據移出數據庫,並用它做任何事情之前投入JSON的時候了。所以真的......最後並不重要。做什麼(最終)物質只是格式化日期YYYY-MM-DD從原始數據被儲存作爲d-M-YY程。那是我的'Doh!那一刻......:/ – Drew