2017-09-18 2 views
0

J'essaye de changer le type de colonne d'un character varying (10) à celui d'une date.xmldb_field Moodle change le type de colonne

je peux courir individuellement comme ceci:

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

Mais après avoir jeté ce dans le script upgrade.php, il vomit sur moi et exige la clause USING que je ne peux pas sembler se rendre au travail. Ou s'il y a même une façon ...

Voici mon script 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); 
} 

Lorsque vous vous connectez à l'administrateur Moodle et la mise à jour en cours d'exécution, je reçois l'erreur suivante:

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". 

Des idées?

Merci!

Répondre

0

Comme indiqué dans les documents Moodle (https://docs.moodle.org/dev/XMLDB_column_types), vous devez éviter d'utiliser des champs datetime - tous les horodatages dans Moodle sont déclarés en tant qu'entier (10). Si vous utilisez l'éditeur XMLDB intégré dans Moodle pour générer vos définitions de table de base de données (et vous devriez vraiment le faire), alors il ne donne pas l'option d'utiliser le type de champ datetime.

+0

Merci. Je suis définitivement un Noob Moodle, et j'ai littéralement trouvé la même page environ 10 minutes après avoir posté ce ^^ ci-dessus. Aussi ... J'ai découvert/rappelé/claqué mon avant quand il m'est apparu que l'application est en train de prendre toutes les données hors de la base de données et de mettre dans JSON tout de suite avant de faire quoi que ce soit avec. Alors vraiment ... ça n'a pas d'importance à la fin. Ce qui importait (en fin de compte) consistait simplement à formater la date à aaaa-mm-jj à partir du jour j-m-yy que les données d'origine étaient stockées. C'était mon 'Doh !! moment de ce jour ...: - / – Drew