Laravel 迁移 - 重命名列时数据类型也会更改
Laravel Migration - Data type also changes when renaming column
我想使用迁移重命名数据库中的列,但是当我尝试时,数据类型也发生了变化。如何在不更改数据类型的情况下重命名列。
数据库中列的当前名称是
payment_amount_cash 类型为 double(10,2)
我试过了
$table->renameColumn('payment_amount_cash', 'payment_amount_full')->comment('Advanced payment')->default("0.00");
重命名列。然后在迁移之后,名称发生了变化,但数据类型也从 double(10,2) 更改为仅 double 因此,使默认值从 0.00 更改为 0.
重命名列的模式后,我还尝试更改数据类型。
$table->renameColumn('payment_amount_cash', 'payment_amount_full')->comment('Advanced payment')->default("0.00");
$table->double('payment_amount_full', 10,2)->change();
但是这个在迁移时给我错误。
Doctrine\DBAL\DBALException : Unknown column type "double" requested.
Any Doctrine type that you use has to be registered with \Doctrine\DBAL\Types\Type::addType().
You can get a list of all the known types with \Doctrine\DBAL\Types\Type::getTypesMap().
If this error occurs during database introspection then you might have forgotten to register all database types for a Doctrine Type.
Use AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement Type#getMappedDatabaseTypes().
If the type name is empty you might have a problem with the cache or forgot some mapping information.
有了这个,我只想知道如何在不影响数据类型的情况下重命名列。迁移后,我想保留刚改名的列的数据类型。
我了解到 Schema 中存在一个关于枚举的问题,直到现在仍在讨论中。
我只是用另一种方法来更新列的数据类型。
DB::statement('ALTER TABLE reservations MODIFY COLUMN payment_amount_full double(10,2)');
这对我有用。如果还有其他方法可以做到这一点,请告诉我。谢谢
我想使用迁移重命名数据库中的列,但是当我尝试时,数据类型也发生了变化。如何在不更改数据类型的情况下重命名列。
数据库中列的当前名称是 payment_amount_cash 类型为 double(10,2)
我试过了
$table->renameColumn('payment_amount_cash', 'payment_amount_full')->comment('Advanced payment')->default("0.00");
重命名列。然后在迁移之后,名称发生了变化,但数据类型也从 double(10,2) 更改为仅 double 因此,使默认值从 0.00 更改为 0.
重命名列的模式后,我还尝试更改数据类型。
$table->renameColumn('payment_amount_cash', 'payment_amount_full')->comment('Advanced payment')->default("0.00");
$table->double('payment_amount_full', 10,2)->change();
但是这个在迁移时给我错误。
Doctrine\DBAL\DBALException : Unknown column type "double" requested.
Any Doctrine type that you use has to be registered with \Doctrine\DBAL\Types\Type::addType().
You can get a list of all the known types with \Doctrine\DBAL\Types\Type::getTypesMap().
If this error occurs during database introspection then you might have forgotten to register all database types for a Doctrine Type.
Use AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement Type#getMappedDatabaseTypes().
If the type name is empty you might have a problem with the cache or forgot some mapping information.
有了这个,我只想知道如何在不影响数据类型的情况下重命名列。迁移后,我想保留刚改名的列的数据类型。
我了解到 Schema 中存在一个关于枚举的问题,直到现在仍在讨论中。 我只是用另一种方法来更新列的数据类型。
DB::statement('ALTER TABLE reservations MODIFY COLUMN payment_amount_full double(10,2)');
这对我有用。如果还有其他方法可以做到这一点,请告诉我。谢谢