.\store.go:32:10: cannot assign *gorm.DB to Db (type gorm.DB) in multiple assignment

原文地址:https://blog.youkuaiyun.com/weixin_39777626/article/details/87095893

原码

var Db gorm.DB

func init() {
	var err error
	Db, err = gorm.Open("postgres", "user=postgres dbname=testdb password=3141596 sslmode=disable")
	if err != nil {
		panic(err)
	}
	Db.AutoMigrate(&Post{}, &Comment{})
}

报错

 

.\store.go:32:10: cannot assign *gorm.DB to Db (type gorm.DB) in multiple assignment
  •  

纠正
如上提示,Db 代表 gorm.DB

无法将 *gorm.DB 转为 gorm.DB ,因为他们类型不同
所以我们要让他们变为同一类,只需在 gorm.DB 前加指针 *

var Db *gorm.DB

func init() {
	var err error
	Db, err = gorm.Open("postgres", "user=postgres dbname=testdb password=3141596 sslmode=disable")
	if err != nil {
		panic(err)
	}
	Db.AutoMigrate(&Post{}, &Comment{})
}

 

[admin]2025/06/10 - 15:39:43.334 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [2.176ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.369 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [33.690ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.374 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [5.236ms] [rows:-] SELECT count(*) FROM information_schema.tables WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' AND table_type = 'BASE TABLE' [admin]2025/06/10 - 15:39:43.375 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [0.384ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.377 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [1.381ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.380 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [1.539ms] [rows:-] SELECT * FROM `casbin_rule` LIMIT 1 [admin]2025/06/10 - 15:39:43.384 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [4.430ms] [rows:-] SELECT column_name, column_default, is_nullable = 'YES', data_type, character_maximum_length, column_type, column_key, extra, column_comment, numeric_precision, numeric_scale , datetime_precision FROM information_schema.columns WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' ORDER BY ORDINAL_POSITION [admin]2025/06/10 - 15:39:43.387 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.812ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.389 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.485ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.390 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.031ms] [rows:-] SELECT count(*) FROM information_schema.statistics WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' AND index_name = 'idx_casbin_rule' [admin]2025/06/10 - 15:39:43.399 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:432 [8.461ms] [rows:412] SELECT * FROM `casbin_rule` ORDER BY ID [admin]2025/06/10 - 15:39:43.409 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:432 [8.083ms] [rows:412] SELECT * FROM `casbin_rule` ORDER BY ID [admin]2025/06/10 - 15:39:43.428 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/api/v1/ad/ad_report.go:51 [2.406ms] [rows:1] SELECT * FROM `ad_config` WHERE `ad_config`.`deleted_at` IS NULL 2025/06/10 15:39:43 [Recovery] 2025/06/10 - 15:39:43 panic recovered: GET /adConfig/syncMiniAppletAd HTTP/1.1 Host: 127.0.0.1:9898 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9,or;q=0.8 Connection: close Cookie: Goland-fcff3ee8=ff15cecc-434f-4a2b-9f47-035aace0e2da Referer: http://localhost:9527/ Sec-Ch-Ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "macOS" Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 X-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiZWNkYWFiNjQtMGRmYS00OTZiLWE5Y2UtNDhlMDMzMDUyMDFjIiwiSUQiOjEsIlVzZXJuYW1lIjoiYWRtaW4iLCJOaWNrTmFtZSI6Ik1yIOi2heeuoSIsIkF1dGhvcml0eUlkIjo4ODgsIkJ1ZmZlclRpbWUiOjg2NDAwLCJpc3MiOiJxbVBsdXMiLCJhdWQiOlsiR1ZBIl0sImV4cCI6MTc1MDEyOTUxOSwibmJmIjoxNzQ5NTI0NzE5fQ.UD6xJG_oMSiF6k_S8O11hpoyzh04zM58nTEtAkYQcY8 X-User-Id: 1 assignment to entry in nil map /Users/linguangzhang/go/go1.20/src/runtime/map_faststr.go:205 (0x10280b1ff) mapassign_faststr: panic(plainError("assignment to entry in nil map")) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/api/v1/ad/ad_report.go:54 (0x104869ccb) (*AdReportApi).SyncMiniAppletAd: mapData["data"] = data /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/operation.go:95 (0x104828813) OperationRecord.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/casbin_rbac.go:36 (0x10482aa93) CasbinHandler.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/jwt.go:77 (0x104829a17) JWTAuth.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/cors.go:26 (0x10482a653) Cors.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102 (0x103ffb397) CustomRecoveryWithWriter.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240 (0x103ff9fa3) LoggerWithConfig.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620 (0x103ff7e83) (*Engine).handleHTTPRequest: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576 (0x103ff7a3b) (*Engine).ServeHTTP: engine.handleHTTPRequest(c) /Users/linguangzhang/go/go1.20/src/net/http/server.go:2936 (0x102c51a7b) serverHandler.ServeHTTP: handler.ServeHTTP(rw, req) /Users/linguangzhang/go/go1.20/src/net/http/server.go:1995 (0x102c4c61b) (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req) /Users/linguangzhang/go/go1.20/src/runtime/asm_arm64.s:1172 (0x10285ef73) goexit: MOVD R0, R0 // NOP [GIN] 2025/06/10 - 15:39:43 | 500 | 103.336958ms | 127.0.0.1 | GET "/adConfig/syncMiniAppletAd"
06-11
<think>我们正在解决Kafka报错:Socket server failed to bind to 10.176.51.13:9092: Cannot assign requested address。 这个错误通常表示Kafka尝试绑定到指定的IP地址和端口(10.176.51.13:9092)时失败,原因可能是该IP地址在机器上不可用,或者端口被占用。 解决步骤: 1. 确认IP地址是否正确:检查10.176.51.13是否是当前机器的有效IP地址。 在Linux上,可以使用命令:`ip addr` 或 `ifconfig` 查看本机IP地址。 如果该IP不存在于本机,则需要修改Kafka配置,绑定到正确的IP。 2. 检查端口是否被占用:使用命令 `netstat -tuln | grep 9092` 查看9092端口是否已被其他进程占用。 如果被占用,需要停止占用该端口的进程,或者修改Kafka的监听端口。 3. 检查Kafka配置文件(server.properties)中的配置项: - `listeners`:确保配置正确,例如:`listeners=PLAINTEXT://10.176.51.13:9092` - `advertised.listeners`:同样需要检查,但主要影响客户端连接,不直接影响绑定。 4. 如果IP地址确实不存在,可以考虑以下几种修改方式: a) 修改为正确的IP地址。 b) 使用`0.0.0.0`来绑定所有网络接口(注意安全风险),例如:`listeners=PLAINTEXT://0.0.0.0:9092` c) 使用主机名(需确保主机名解析正确)。 5. 检查操作系统限制:例如,非root用户无法绑定1024以下的端口,但9092通常不受此限制。另外,检查防火墙设置是否允许该端口。 6. 如果该IP地址是动态分配的(如DHCP),可能存在IP地址变化的情况,建议使用静态IP或者使用主机名。 示例修改Kafka配置文件(server.properties): ``` listeners=PLAINTEXT://10.176.51.13:9092 advertised.listeners=PLAINTEXT://10.176.51.13:9092 ``` 修改后,重启Kafka服务。 注意:如果修改了IP地址,需要确保客户端使用新的地址进行连接。 另外,在某些情况下,如果机器有多个网络接口,可能需要绑定到特定的接口上,确保Kafka绑定到正确的接口。 如果问题仍然存在,可能需要检查网络接口的状态(是否启动)以及是否有其他网络配置问题。 让我们一步步排查。 </think>### Kafka报错 "Socket server failed to bind to 10.176.51.13:9092: Cannot assign requested address" 解决方案 此错误表示Kafka无法绑定到指定网络地址(IP:端口),通常由以下原因导致: #### 1. **IP地址无效或不可用**(最常见原因) - **检查IP有效性**: ```bash # Linux/macOS ifconfig 或 ip address show # Windows ipconfig ``` 确认`10.176.51.13`是否存在于本机网络接口中。若不匹配,需修改配置。 - **解决方案**: - 修改`server.properties`中的监听地址: ```properties listeners=PLAINTEXT://0.0.0.0:9092 # 绑定所有网卡 advertised.listeners=PLAINTEXT://<实际IP>:9092 # 客户端使用的地址 ``` - 或使用本机正确IP替换`10.176.51.13` #### 2. **端口冲突** - **检查端口占用**: ```bash # Linux/macOS sudo lsof -i :9092 或 netstat -tuln | grep 9092 # Windows netstat -ano | findstr :9092 ``` 若端口被占用(如其他Kafka实例),停止冲突进程或更改端口: ```properties listeners=PLAINTEXT://0.0.0.0:9093 ``` #### 3. **网络配置问题** - **防火墙限制**: ```bash # Linux防火墙放行 sudo ufw allow 9092/tcp ``` - **临时IP地址**(如DHCP分配): - 改为静态IP或使用`hostname -I`获取稳定地址 #### 4. **Kafka配置错误** - **验证配置语法**: - 确保`server.properties`无拼写错误: ```properties listeners=PLAINTEXT://10.176.51.13:9092 # 注意双斜杠和协议前缀 ``` - **避免`localhost`陷阱**: 集群环境下禁止使用`127.0.0.1`或`localhost` #### 5. **操作系统限制** - **端口保留范围**(Linux): ```bash sysctl net.ipv4.ip_local_port_range # 确认9092不在临时端口范围 ``` - **连接数限制**: ```bash sysctl -w net.core.somaxconn=4096 # 提高连接队列 ``` > **操作流程**: > 1. 确认本机IP → 2. 检查端口占用 → 3. 修改`server.properties` → 4. 重启Kafka > ```bash > bin/kafka-server-stop.sh > bin/kafka-server-start.sh config/server.properties > ``` #### 验证修复 使用`telnet`测试连通性: ```bash telnet 10.176.51.13 9092 # 替换为实际IP ``` 成功连接显示`Trying... Connected`[^1]。 --- ### 相关问题 1. Kafka启动时如何查看完整的错误日志? 2. 如何配置Kafka集群避免单点故障? 3. 生产环境中如何优化Kafka的网络传输性能? 4. ZooKeeper与Kafka的网络配置有哪些关联注意事项? [^1]: Kafka官方文档强调网络配置需与实际环境匹配,绑定无效IP将触发`Cannot assign requested address`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值