@@ -192,29 +192,31 @@ func (m Migrator) DropConstraint(value interface{}, name string) error {
192192func (m Migrator ) ColumnTypes (value interface {}) (columnTypes []gorm.ColumnType , err error ) {
193193 columnTypes = make ([]gorm.ColumnType , 0 )
194194 err = m .RunWithValue (value , func (stmt * gorm.Statement ) error {
195- currentDatabase := m .DB .Migrator ().CurrentDatabase ()
196- columns , err := m .DB .Raw (
197- "SELECT column_name, is_nullable, data_type, character_maximum_length, " +
198- "numeric_precision, numeric_scale, datetime_precision " +
199- "FROM information_schema.columns WHERE table_schema = ? AND table_name = ?" ,
200- currentDatabase , stmt .Table ).Rows ()
195+ var (
196+ currentDatabase = m .DB .Migrator ().CurrentDatabase ()
197+ columnTypeSQL = "SELECT column_name, is_nullable, data_type, character_maximum_length, numeric_precision, numeric_scale "
198+ )
199+
200+ if ! m .DisableDatetimePrecision {
201+ columnTypeSQL += ", datetime_precision "
202+ }
203+ columnTypeSQL += "FROM information_schema.columns WHERE table_schema = ? AND table_name = ?"
204+
205+ columns , err := m .DB .Raw (columnTypeSQL , currentDatabase , stmt .Table ).Rows ()
201206 if err != nil {
202207 return err
203208 }
204209 defer columns .Close ()
205210
206211 for columns .Next () {
207212 var column Column
208- err = columns .Scan (
209- & column .name ,
210- & column .nullable ,
211- & column .datatype ,
212- & column .maxlen ,
213- & column .precision ,
214- & column .scale ,
215- & column .datetimeprecision ,
216- )
217- if err != nil {
213+ var values = []interface {}{& column .name , & column .nullable , & column .datatype , & column .maxlen , & column .precision , & column .scale }
214+
215+ if ! m .DisableDatetimePrecision {
216+ values = append (values , & column .datetimeprecision )
217+ }
218+
219+ if err = columns .Scan (values ... ); err != nil {
218220 return err
219221 }
220222 columnTypes = append (columnTypes , column )
0 commit comments