以下为Python代码, 将其中的SQLinsert into sbtest001.t0612 select id,k,c,pad from sbtest001.sbtest6;改为 insert into sbtest001.t0612 select * from sbtest001.sbtest6; 后执行返回结果不符合预期,实际SQL并未执行
def sql_execute():
# tb = pt.PrettyTable()
sql = r'''/*--user=$user;--password=$password;--host=$host;--port=3306;--execute=1;--backup=0;*/
inception_magic_start;
insert into sbtest001.t0612 select id,k,c,pad from sbtest001.sbtest6;
inception_magic_commit;'''
conn = pymysql.connect(host='127.0.0.1', user='', passwd='',
db='', port=4000, charset="utf8mb4", connect_timeout=2)
cur = conn.cursor()
cur.execute(sql)
result = cur.fetchall()
cur.close()
conn.close()
sql_execute()
- select * 的执行情况, 实际sbtest001.t0612并未写入数据
((1, 'CHECKED', 1, 'Audit Completed', 'Select only star is not allowed.', 'insert into sbtest001.t0612 select * from sbtest001.sbtest6', 0, '0_0_00000000', None, '0', None, '0'),)
- select id,k,c,pad 的执行情况,符合预期
((1, 'EXECUTED', 0, 'Execute Successfully', None, 'insert into sbtest001.t0612 select id,k,c,pad from sbtest001.sbtest6', 10000, '1718175254_3629333_00000000', None, '0.206', None, '0'),)
描述 使用goinception 执行 insert select 语句,如果select * 则执行不成功,且不报错。指定select 的字段 ,例如 select id,k,c,pad 可以成功。 goinception版本为1.3.0-68
重现
insert into sbtest001.t0612 select id,k,c,pad from sbtest001.sbtest6;
改为insert into sbtest001.t0612 select * from sbtest001.sbtest6;
后执行返回结果不符合预期,实际SQL并未执行sql_execute()
((1, 'CHECKED', 1, 'Audit Completed', 'Select only star is not allowed.', 'insert into sbtest001.t0612 select * from sbtest001.sbtest6', 0, '0_0_00000000', None, '0', None, '0'),)
((1, 'EXECUTED', 0, 'Execute Successfully', None, 'insert into sbtest001.t0612 select id,k,c,pad from sbtest001.sbtest6', 10000, '1718175254_3629333_00000000', None, '0.206', None, '0'),)
er_select_only_star = 1