diff --git a/model/connect/MySQLSchemaManager.php b/model/connect/MySQLSchemaManager.php index 85157de58..3fc9d59db 100644 --- a/model/connect/MySQLSchemaManager.php +++ b/model/connect/MySQLSchemaManager.php @@ -407,15 +407,17 @@ class MySQLSchemaManager extends DBSchemaManager { $precision = $values['precision']; } - $defaultValue = ''; + // Fix format of default value to match precision if (isset($values['default']) && is_numeric($values['default'])) { $decs = strpos($precision, ',') !== false ? (int) substr($precision, strpos($precision, ',') + 1) : 0; - $defaultValue = ' default ' . number_format($values['default'], $decs, '.', ''); + $values['default'] = number_format($values['default'], $decs, '.', ''); + } else { + unset($values['default']); } - return "decimal($precision) not null $defaultValue"; + return "decimal($precision) not null" . $this->defaultClause($values); } /** diff --git a/tests/model/DataObjectSchemaGenerationTest.php b/tests/model/DataObjectSchemaGenerationTest.php index 7c4b80dfe..e772b4184 100644 --- a/tests/model/DataObjectSchemaGenerationTest.php +++ b/tests/model/DataObjectSchemaGenerationTest.php @@ -178,6 +178,11 @@ class DataObjectSchemaGenerationTest_DO extends DataObject implements TestOnly { private static $db = array( 'Enum1' => 'Enum("A, B, C, D","")', 'Enum2' => 'Enum("A, B, C, D","A")', + 'NumberField' => 'Decimal', + 'FloatingField' => 'Decimal(10,3,1.1)', + 'TextValue' => 'Varchar', + 'Date' => 'SS_Datetime', + 'MyNumber' => 'Int' ); }