@@ -8,6 +8,7 @@ package pgsql_test
88
99import (
1010 "fmt"
11+ "strings"
1112 "testing"
1213
1314 "github.com/gogf/gf/v2/frame/g"
@@ -327,3 +328,58 @@ func Test_DB_TableFields(t *testing.T) {
327328 }
328329 })
329330}
331+
332+ func Test_NoFields_Error (t * testing.T ) {
333+ createSql := `CREATE TABLE IF NOT EXISTS %s (
334+ id bigint PRIMARY KEY,
335+ int_col INT);`
336+
337+ type Data struct {
338+ Id int64
339+ IntCol int64
340+ }
341+ // pgsql converts table names to lowercase
342+ tableName := "Error_table"
343+ errStr := fmt .Sprintf (`The table "%s" may not exist, or the table contains no fields` , tableName )
344+ _ , err := db .Exec (ctx , fmt .Sprintf (createSql , tableName ))
345+ gtest .AssertNil (err )
346+ defer dropTable (tableName )
347+
348+ gtest .C (t , func (t * gtest.T ) {
349+ var data = Data {
350+ Id : 2 ,
351+ IntCol : 2 ,
352+ }
353+ _ , err = db .Model (tableName ).Data (data ).Insert ()
354+ t .Assert (err , errStr )
355+
356+ // Insert a piece of test data using lowercase
357+ _ , err = db .Model (strings .ToLower (tableName )).Data (data ).Insert ()
358+ t .AssertNil (err )
359+
360+ _ , err = db .Model (tableName ).Where ("id" , 1 ).Data (g.Map {
361+ "int_col" : 9999 ,
362+ }).Update ()
363+ t .Assert (err , errStr )
364+
365+ })
366+ // The inserted field does not exist in the table
367+ gtest .C (t , func (t * gtest.T ) {
368+ data := map [string ]any {
369+ "id1" : 22 ,
370+ "int_col_22" : 11111 ,
371+ }
372+ _ , err = db .Model (tableName ).Data (data ).Insert ()
373+ t .Assert (err , errStr )
374+
375+ lowerTableName := strings .ToLower (tableName )
376+ _ , err = db .Model (lowerTableName ).Data (data ).Insert ()
377+ t .Assert (err , fmt .Errorf (`input data match no fields in table "%s"` , lowerTableName ))
378+
379+ _ , err = db .Model (lowerTableName ).Where ("id" , 1 ).Data (g.Map {
380+ "int_col-2" : 9999 ,
381+ }).Update ()
382+ t .Assert (err , fmt .Errorf (`input data match no fields in table "%s"` , lowerTableName ))
383+ })
384+
385+ }
0 commit comments