Closed padoruuu closed 3 months ago
主键冲突创建失败,属于预期内的错误抛出
-- 不存在就创建
function handle.not_exist_create(entry_data)
local player_id = assert(entry_data.player_id)
local entry = g_orm_obj:get_one_entry(player_id)
if entry then
return
end
entry = g_orm_obj:create_one_entry(entry_data)
if not entry then return end
return entry:get_entry_data()
end
你可以实现以上handle处理函数,用来避免创建主键冲突的数据
人比较菜,想边学习边搭建个小网站练手,目前遇到的报错如下: 如果单个创建的有冲突就报错了 local ret = client:create_one_entry({player_id = 10005})
[:0000000f][20240630 16:32:42 76]lua call [e to :f : 40 msgsz = 94] error : [31m../../skynet/lualib/skynet.lua:987: ../../skynet/lualib/skynet.lua:452: ../../skynet/lualib/skynet/queue.lua:20: ../../skynet/lualib/skynet/queue.lua:20: ../../lualib/skynet-fly/db/ormadapter/ormadapter_mysql.lua:375: _insert_one err insert into t_player (
player_id
,nickname
,sex
,status
) value(10005,0,0,0) stack traceback: [C]: in function 'error' ../../lualib/skynet-fly/db/ormadapter/ormadapter_mysql.lua:375: in function <../../lualib/skynet-fly/db/ormadapter/ormadapter_mysql.lua:369> (...tail calls...) ../../lualib/skynet-fly/db/orm/ormtable.lua:593: in function <../../lualib/skynet-fly/db/orm/ormtable.lua:588> [C]: in function 'xpcall' ../../skynet/lualib/skynet/queue.lua:34: in function <../../skynet/lualib/skynet/queue.lua:24> (...tail calls...) ../../module/orm_table_m.lua:34: in function <../../module/orm_table_m.lua:33> [C]: in function 'xpcall' ../../skynet/lualib/skynet/queue.lua:34: in upvalue 'queue' ../../module/orm_table_m.lua:173: in function 'orm_table_m.call' ../../lualib/skynet-fly/utils/skynet_util.lua:39: in upvalue 'f' ../../skynet/lualib/skynet.lua:402: in function <../../skynet/lualib/skynet.lua:374> stack traceback: [C]: in function 'assert' ../../skynet/lualib/skynet/queue.lua:20: in function <../../skynet/lualib/skynet/queue.lua:12> (...tail calls...) ../../module/orm_table_m.lua:34: in function <../../module/orm_table_m.lua:33> [C]: in function 'xpcall' ../../skynet/lualib/skynet/queue.lua:34: in upvalue 'queue' ../../module/orm_table_m.lua:173: in function 'orm_table_m.call' ../../lualib/skynet-fly/utils/skynet_util.lua:39: in upvalue 'f' ../../skynet/lualib/skynet.lua:402: in function <../../skynet/lualib/skynet.lua:374> stack traceback: [C]: in function 'assert' ../../skynet/lualib/skynet/queue.lua:20: in function <../../skynet/lualib/skynet/queue.lua:12> (...tail calls...) ../../module/orm_table_m.lua:173: in function 'orm_table_m.call' ../../lualib/skynet-fly/utils/skynet_util.lua:39: in upvalue 'f' ../../skynet/lualib/skynet.lua:402: in function <../../skynet/lualib/skynet.lua:374> stack traceback: [C]: in function 'assert' ../../skynet/lualib/skynet.lua:987: in function 'skynet.dispatch_message'[0m [:00000010][20240630 16:32:42 76]lua call [f to :10 : 24 msgsz = 0] error : [31m../../skynet/lualib/skynet.lua:987: ../../skynet/lualib/skynet.lua:452: ../../skynet/lualib/skynet.lua:719: call failed stack traceback: [C]: in function 'error' ../../skynet/lualib/skynet.lua:719: in upvalue 'yield_call' ../../skynet/lualib/skynet.lua:736: in function 'skynet.call' (...tail calls...) ../../lualib/skynet-fly/client/orm_table_client.lua:21: in method 'create_one_entry' ./module/test_m.lua:34: in upvalue 'f' ../../skynet/lualib/skynet.lua:375: in function <../../skynet/lualib/skynet.lua:374> stack traceback: [C]: in function 'assert' ../../skynet/lualib/skynet.lua:987: in function 'skynet.dispatch_message'[0m