使用PopSQL向Oracle表插入数据提示成功但无数据写入的问题排查
PopSQL向Oracle插入数据提示成功但无数据写入的排查方案
日期格式不兼容
Oracle的DATE类型依赖会话的NLS_DATE_FORMAT参数,直接用字符串'01-JAN-2010'可能因格式不匹配导致插入失败但未抛出明确错误。解决办法:- 显式指定日期转换格式:
INSERT INTO EMPLOYEES VALUES (100, 'Malik', 'Makkes', TO_DATE('01-JAN-2010', 'DD-MON-YYYY'), 9000); COMMIT;- 先检查当前会话的日期格式:
SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT';如果格式不是
DD-MON-YYYY,可以临时修改会话格式:ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';事务提交未生效
即使写了COMMIT,PopSQL的Oracle连接可能未开启自动提交,或者COMMIT语句未被正确执行。尝试单独执行COMMIT;语句后再查询,或者在PopSQL的连接设置里开启「自动提交」选项。Schema或表名匹配问题
确认PopSQL连接的Oracle用户与创建employees表的用户一致,避免查询到其他Schema下的同名表。可以显式指定Schema查询验证:
SELECT * FROM YOUR_USER_NAME.employees;
替换YOUR_USER_NAME为你创建表的用户名。
- 隐性约束冲突
虽然是新创建的表,但仍有可能存在隐性问题(比如主键重复,不过首次插入不会)。尝试插入一条新的测试数据验证:
INSERT INTO EMPLOYEES VALUES (101, 'Test', 'Demo', TO_DATE('01-FEB-2010', 'DD-MON-YYYY'), 7500); COMMIT; SELECT * FROM employees;
也可以检查表的约束状态:
SELECT constraint_name, status FROM user_constraints WHERE table_name = 'EMPLOYEES';
内容的提问来源于stack exchange,提问作者Nobody
相关产品推荐
相关产品推荐

