当我尝试通过JDBC向Informix TEXT列插入一些数据时,我遇到了问题.在ODBC中,我可以像这样简单地运行SQL:
INSERT INTO test_table (text_column) VALUES ('insert')
Run Code Online (Sandbox Code Playgroud)
但这在JDBC中不起作用,我收到错误:
617: A blob data type must be supplied within this context.
Run Code Online (Sandbox Code Playgroud)
我搜索了这个问题,并从2003年发现了消息:
我改变了我的代码以使用PreparedStatement.现在它适用于JDBC,但在ODBC中尝试使用PreparedStatement时出现错误:
Error: [Informix][Informix ODBC Driver][Informix]
Illegal attempt to convert Text/Byte blob type.
[SQLCode: -608], [SQLState: S1000]
Run Code Online (Sandbox Code Playgroud)
测试表创建时使用:
CREATE TABLE _text_test (id serial PRIMARY KEY, txt TEXT)
Run Code Online (Sandbox Code Playgroud)
用于测试两个驱动程序的Jython代码:
# for Jython 2.5 invoke with --verify
# beacuse of bug: http://bugs.jython.org/issue1127
import traceback
import sys
from com.ziclix.python.sql import zxJDBC
def test_text(driver, db_url, usr, passwd):
arr = db_url.split(':', 2)
dbname …Run Code Online (Sandbox Code Playgroud) 我的多线程服务器有奇怪的问题.它是Windows服务,其工作方式类似于管理与许多客户端的套接字连接的FTP服务器.它是使用Delphi 2006(Turbo Delphi)创建的,在大多数机器上运行良好.不幸的是,在某些机器上它有时会崩溃而没有任何痕迹(异常应该保存到日志中,但不是).有时系统显示MessageBox(它不是来自服务的MessageBox,但我认为它是系统MessageBox),但我经常在System EventLog中看到这样的信息:
Application popup: ht_switch.exe - Application Error : The exception unknown software exception (0x0eedfade) occurred in the application at location 0x77e4bef7.
Run Code Online (Sandbox Code Playgroud)
在Application EventLog中我可以看到:
Faulting application ht_switch.exe, version 1.2.0.2, faulting module kernel32.dll, version 5.2.3790.5069, fault address 0x0000bef7.
Run Code Online (Sandbox Code Playgroud)
有时这些条目在应用程序或系统事件日志中,但没有任何反应 - 我的服务器通常工作,但有时只是消失.然后,Service Manager在EventlLog中报告我的服务意外停止.
我没有看到这种问题的"常见"情景.它出现在一些WinXP,Win2003和Win2008上.所有测试机都应用了所有MS补丁.
我已经读过:d7 windows服务中0x0eedfade kernelbase.dll错误模块的答案,但我不使用Dialog单位.
我该怎么做才能修复它?如何追踪此类0x0eedfade异常?
编辑
我用EurekaLog和madExcept测试了几天我的服务器.
EurekaLog:
服务器工作没有问题.EventLog中没有报告异常.没有报告异常%AppData%\EurekaLab s.a.s\EurekaLog\Bug Reports\(应该有我的程序的目录,但它没有创建 - 我不知道是否应该创建它或者它是否是EurekaLog错误).
EurekaLog7在将"应用程序类型"设置为Windows服务时遇到问题.这是众所周知的问题,作者正在研究它.我使用它编译的服务适用于WinXP,但无法在Win2003上运行.它根本就没有开始.
疯狂除外:
服务器工作了4个小时然后崩溃了.我在我的帖子中发现了这个异常:
EAccessViolation: Access violation at address 7C90100B in module 'ntdll.dll'. Read of …Run Code Online (Sandbox Code Playgroud) 我在使用JDBC PostgreSQL驱动程序的多线程应用程序中遇到问题.有时它会挂起很长时间,对各种数据库进行各种查询.要停止这样的挂起,我将查询超时设置为10分钟,但是从我的应用程序中它不起作用,在此之后它不会返回.
这种挂线程的jstack看起来像:
"srv_thead_160621090411" #1560 prio=5 os_prio=0 tid=0x00007f0d24001800 nid=0x150f runnable [0x00007f0c83ffd000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:143)
at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:112)
at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:70)
at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:283)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1799)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200)
- locked <0x00000005dc2f9f88> (a org.postgresql.core.v3.QueryExecutorImpl)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
Run Code Online (Sandbox Code Playgroud)
从服务器端,我看到查询(pid 31657)运行> 30秒,但服务器检测到客户端断开连接.我认为在10分钟后服务器从JDBC驱动程序接收到"带有PID 32657的CANCEL查询"命令,但此连接在断开连接后结束:
2016-06-21 07:05:23.340 CEST [31657]: [1-1] postgres [unknown] 192.168.1.124(58729) dbtest %LOG: duration: 30689.838 ms execute <unnamed>: SELECT MAX(do_nr) + 1 AS numer FROM dokumenty WHERE (do_typ = 'WZ' or upper(do_typ) = upper('WZ_tmp')) …Run Code Online (Sandbox Code Playgroud) 我svn在Linux上遇到了奇怪的错误.
我想将test.xml文件添加到存储库.此文件是标准XML文本文件,仅包含拉丁字符(无BOM)和Linux行尾(LF仅限).但我的svn客户失败了:
[mn@mn testy]$ cat test.xml
<?xml version="1.0" encoding="UTF-8"?>
<Test>test</Test>
<Test>89012345678901234</Test>
[mn@mn testy]$ file test.xml
test.xml: XML document text
[mn@mn testy]$ svn add test.xml
svn: E200009: Can't set 'svn:eol-style': file '/home/mn/testy/test.xml' has binary mime type property
Run Code Online (Sandbox Code Playgroud)
相同的操作适用于Windows环境.我都配置了auto-props:
*.xml = svn:eol-style=native
Run Code Online (Sandbox Code Playgroud)
我都有svn, version 1.8.10 (r1615264).
我可以说它:
添加svn:mime-type=text/xml到自动道具,所以它看起来像:
*.xml = svn:mime-type=text/xml;svn:eol-style=native
Run Code Online (Sandbox Code Playgroud)svn add与--no-auto-props选项,然后使用svn propset
但我想通过简单地添加文件来实现.
为什么Linux上的Subversion客户端将此文件检测为二进制文件?
我使用Jetty9,我想测试压缩文本文件是否会提高性能.起初我对提供脱机压缩文件感兴趣,就像它描述的那样:http://marianoguerra.org/posts/201205enable-gzip-compression-in-jetty.html
我的代码看起来像:
static private void set_jetty_handlers(Server server)
{
// gzip: I have added it to to serve off-line compressed JavaScript, CSS etc.
// as described at: http://marianoguerra.org/posts/201205enable-gzip-compression-in-jetty.html
ServletHolder servletHolder = new ServletHolder(new DefaultServlet());
servletHolder.setInitParameter("gzip", "true");
ServletContextHandler s_context_handler = new ServletContextHandler();
s_context_handler.addServlet(servletHolder,"/*");
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(false);
resource_handler.setWelcomeFiles(new String[] {"index.html"});
resource_handler.setResourceBase("");
resource_handler.setCacheControl(MAX_AGE);
// gzip: I have added it to to serve offline compressed JavaScript, CSS etc.
resource_handler.setHandler(s_context_handler);
// I want to work with aliases (links and symbolic …Run Code Online (Sandbox Code Playgroud) 我有 PostgreSQL 9.5.0,我观察到非常相似的查询返回的奇怪的间隔值。我认为然后间隔大于 24 小时,然后返回如下days部分:
SELECT (1000 * ('2016-02-04 12:00:11'::timestamp - '2016-02-03 12:00:00'::timestamp)::interval)::interval
1000 days 03:03:20
Run Code Online (Sandbox Code Playgroud)
但有时小时不会转换为天:
SELECT (1000 * ('2016-02-04 11:00:11'::timestamp - '2016-02-03 12:00:00'::timestamp)::interval)::interval
23003:03:20
Run Code Online (Sandbox Code Playgroud)
如何强制使用天数部分使用相同的输出格式?
我的大多数资源都是颠覆,我使用'$ Id $'为这些来源添加修订信息.然后我可以轻松检查使用了哪些来源(例如--version选项显示该信息).
现在我要使用集市,我找不到这样的功能.在集市上有没有相当于svn'$ Id $'的东西?
我有Oracle 9.2和JMS的问题.我创建了PL/SQL例程来将XML文本(从文件或CLOB)发送到队列,但是这个例程不能编译.
我的代码看起来像(填充消息省略):
create or replace procedure jms_test(msg varchar2)
is
id pls_integer;
message sys.aq$_jms_stream_message;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
msgid raw(16);
java_exp exception;
v_filehandle_input utl_file.file_type;
v_newline varchar2(32767);
pragma exception_init(java_exp, -24197);
begin
message := sys.aq$_jms_stream_message.construct;
message.set_string_property('FROM', 'TEST');
id := message.clear_body(-1);
end;
Run Code Online (Sandbox Code Playgroud)
甲骨文报告说:
Error(6,21): PLS-00201: identifier 'DBMS_AQ' must be declared
Run Code Online (Sandbox Code Playgroud)
我查看了一些新闻组并尝试了我发现的所有内容,但没有成功.
授予(成功)许多权利
desc dbms_aq显示了许多函数,如DEQUEUE,ENQUEUE,LISTEN …
如何在当天30天后找到日期?这里30是固定值.如何将动态值传递给此函数..
days = document.getElementById('day').value;
var d = new Date();
d.setDate(d.getDate() + days);
Run Code Online (Sandbox Code Playgroud)
它不起作用..它给出了错误的答案
有几天我们有JDK8.我试图用SPDY服务器运行Jetty.在JDK8中没有NPN支持,所以它结束于:
[qtp22068985-16-selector-ServerConnectorManager@12e7b0e/1] WARN
org.eclipse.jetty.io.SelectorManager - Exception while notifying connection SslConnection@e1448a{NEED_UNWRAP,eio=-1/-1,di=-1} ->
NPNServerConnection@382d40{IDLE}
java.lang.NoSuchMethodError:
sun.security.ssl.HandshakeHash.<init>(ZZLjava/util/Set;)V
at sun.security.ssl.Handshaker.activate(Handshaker.java:493)
Run Code Online (Sandbox Code Playgroud)
我npn-boot-1.1.6.v20130911.jar在CLASSPATH上运行它,它与最新的JDK7一起使用.
有没有关于如何在JDK8上使用SPDY运行Jetty的解决方法?
我有一个奇怪的问题。某些表具有要插入数字的字符串值的整数列。它非常适用于字符串值与诸如1,10等,但没有用十进制点值:3.14。
这样的SQL看起来像:
INSERT INTO test (intcol) VALUES ('2');
INSERT INTO test (intcol) VALUES ('1.7');
Run Code Online (Sandbox Code Playgroud)
并失败:
ERROR: invalid input syntax for integer: "1.7"
Run Code Online (Sandbox Code Playgroud)
我已经在Oracle和Informix中尝试过这样的代码。两者的工作原理不同。Oracle将其四舍五入并插入2,而Informix将其截断并插入1。
我知道在PostgreSQL中我可以使用:
INSERT INTO test (intcol) VALUES (1.7);
Run Code Online (Sandbox Code Playgroud)
然后PostgreSQL将它取整并插入2,但是我想知道是否可以对字符串做类似的事情。
问题“为什么?” 我可以回答,这是更大的应用程序的一部分,该应用程序使用所有参数均为字符串的PreparedStatement。此应用程序不检查数据库模式是否为每一列使用特定类型的变量,它仅使用字符串,实际上,PreparedStatement类似于:
InsertSQL("INSERT INTO " + table_name + " (" + columns + ") VALUES (" + question_marks + ")", csv_data);
Run Code Online (Sandbox Code Playgroud) 我无法从我的Jython程序连接到数据库.纯Java程序可以连接,我可以从Jython连接到db,但只使用JDBC-ODBC桥:"sun.jdbc.odbc.JdbcOdbcDriver".如果我使用本机JDBC驱动程序,我的程序会因"找不到驱动程序"异常而失败.
码:
import sys
from com.ziclix.python.sql import zxJDBC
connection1 = zxJDBC.connect('jdbc:odbc:test_odbc', 'postgres', 'postgres', 'sun.jdbc.odbc.JdbcOdbcDriver')
print "JDBC:ODBC connection set"
connection2 = zxJDBC.connect('jdbc:postgresql://127.0.0.1/test?stringtype=unspecified', 'postgres', 'postgres', 'org.postgresql.Driver')
print "JDBC native connection set"
Run Code Online (Sandbox Code Playgroud)
输出:
C:\tools\pyscripts\scripts\db_examples>jython --version
Jython 2.5b1 (trunk:5903:5905, Jan 9 2009, 16:01:29)
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_11
C:\tools\pyscripts\scripts\db_examples>jython pg_test.py
JDBC:ODBC connection set
Traceback (most recent call last):
File "pg_test.py", line 6, in <module>
connection2 = zxJDBC.connect('jdbc:postgresql://127.0.0.1/test?stringtype=un
specified', 'postgres', 'postgres', 'org.postgresql.Driver')
zxJDBC.DatabaseError: driver [org.postgresql.Driver] not found
Run Code Online (Sandbox Code Playgroud)
我认为我的CLASSPATH设置正确,而本机Java程序可以使用本机驱动程序连接到此数据库.我发现所有JDBC驱动程序都在cachedir\packages中有.pkc文件.
我应该设置什么来获取数据库连接?
我想将 PostgreSQL 数据库升级到不支持 OIDS 的新版本。一些表是使用创建的WITH OIDS。我认为这是通过default_with_oids设置。WITH OIDS如果表是在系统架构表information_schema.*、系统目录表pg_*或其他位置创建的,是否有信息?