【问题标题】:xmldb_field Moodle change column typexmldb_field Moodle 更改列类型
【发布时间】:2017-09-18 20:32:12
【问题描述】:

我正在尝试将列类型从 character varying (10) 更改为日期。

我可以像这样单独运行它:

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

但是在将其放入 upgrade.php 脚本后,它对我产生了影响,并且需要 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".

有什么想法吗?

谢谢!

【问题讨论】:

    标签: php database postgresql moodle


    【解决方案1】:

    如 Moodle 文档 (https://docs.moodle.org/dev/XMLDB_column_types) 中所述,您应避免使用日期时间字段 - Moodle 中的所有时间戳都声明为整数 (10)。

    如果您使用 Moodle 中内置的 XMLDB 编辑器来生成数据库表定义(您确实应该这样做),那么它不会提供使用日期时间字段类型的选项。

    【讨论】:

    • 谢谢。我绝对是一个 Moodle 菜鸟,并且在上面发布 ^^ 后大约 10 分钟就找到了同一个页面。另外...当我突然意识到该应用程序基本上是从数据库中取出所有数据并在对其进行任何操作之前立即将其放入 JSON 时,我发现/记得/向前冲了上去。所以真的……到最后都无所谓了。 (最终)重要的只是将日期格式化为 yyyy-mm-dd 远离存储原始数据的 d-m-yy 。那是我的'Doh!那一天的时刻... :-/
    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2012-03-19
    • 2012-07-15
    • 2014-06-07
    • 2012-08-27
    相关资源
    最近更新 更多