标签: database-connection

DriverManager getConnection的连接超时

我正在尝试使用标准JDBC方式连接到DB

connection = DriverManager.getConnection(url, username, password);
Run Code Online (Sandbox Code Playgroud)

连接上是否存在最大超时值,连接存在多长时间,是否可以增加该值.我希望在连接永远打开的情况下,这是一个好主意.

java oracle database-connection jdbc

23
推荐指数
4
解决办法
8万
查看次数

使用phpMyAdmin连接到外部服务器

我在本地计算机上安装了phpMyAdmin.如何将其连接到外部服务器?

php database-connection phpmyadmin remote-server

23
推荐指数
2
解决办法
10万
查看次数

错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+

我收到以下错误:

数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+.请使用管理工具使用该命令重置密码SET PASSWORD = PASSWORD('your_existing_password').

这将存储一个新的,更安全的哈希值mysql.user.如果在PHP 5.2或更早版本执行的其他脚本中使用此用户,则可能需要从my.cnf文件中删除旧密码标志

我在我的本地机器上使用PHP 5.3.8和MySQL 5.5.16,我的主机(media temple)运行PHP 5.3 MySQL 5.0.51a.实时服务器上的版本比我机器上的版本旧.

如何修复此错误并从本地计算机连接到MySQL?

我知道这个帖子有类似的帖子,但是我已经尝试了所有这些帖子,但没有一个在工作.

php mysql sql database database-connection

23
推荐指数
1
解决办法
6万
查看次数

关闭H2的正确方法是什么?

这与这篇文章有关.
我认为我的H2意思是它没有正确关闭.
我怀疑这是因为我看到myDB.lock.db我关闭tomcat并且进程没有停止.
我使用Tomcat的连接池,数据库的URL是:
url="jdbc:h2:file:/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase;SCHEMA=myschema"

从文件关闭H2:

通常,数据库在最后一次连接关闭时关闭....默认情况下,数据库在最后一个连接关闭时关闭.但是,如果它从未关闭,则在虚拟机使用关闭挂钩正常退出时,数据库将关闭

我无法理解我是否做错了什么.
我应该通过命令强制关闭数据库吗?这是关机钩子的意思吗?
我在这做错了什么?

注意:
我在Google中找不到如何H2正确关闭的示例(除了它在上次连接关闭时自动关闭的声明).我应该给SHUTDOWN自己打电话吗 这是正确的方法吗?
我已经看到投票来结束这个问题了,但我正在研究的一个例子没有理由或联系

更新:
在Joonas Pulakka回答一些额外信息之后:

javacore我使用kill -3我看到的线程:

"H2 Log Writer MYAPPLICATION"J9VMThread:0x08DC6F00,j9thread_t:0x08C9B790,java/lang/Thread:0xE7206CC8,状态:CW,prio = 5 3XMTHREADINFO1(本机线程ID:0xA32,原生优先级:0x5,本机策略:UNKNOWN)3XMTHREADINFO2
(原生)堆栈地址范围从:0xE5E26000,到:0xE5E67000,大小:0x41000)3XMTHREADINFO3 Java callstack:
java/lang/Object.wait上的
4XESTACKTRACE (本机方法)java/lang/Object.wait上的4XESTACKTRACE(Object.java:196(编译代码) ))4xESTACKTRACE at org/h2/store/WriterThread.run(WriterThread.java:102)
4XESTACKTRACE at java/lang/Thread.run(Thread.java:736)

3XMTHREADINFO"pool-8-thread-1"J9VMThread:0x087C0200,j9thread_t:0x0840566C,java/lang/Thread:0xE79BFC80,state:P,
prio = 5 3XMTHREADINFO1(本机线程ID:0xE1A,本机优先级:0x5,本机策略:UNKNOWN )3XMTHREADINFO2
(本机堆栈地址范围:0xE5F69000,至:0xE5FAA000,大小:0x41000)3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at sun/misc/Unsafe.park(本机方法)
4XESTACKTRACE at java/util/concurrent/locks/LockSupport.park( LockSupport.java:184(Compiled Code))4XESTACKTRACE at java/util/concurrent/locks/AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:1998(Compiled Code))4XESTACKTRACE at java/util/concurrent/LinkedBlockingQueue.take(LinkedBlockingQueue. java:413(编译代码))4XESTACKTRACE at …

java tomcat database-connection jdbc h2

23
推荐指数
3
解决办法
3万
查看次数

Django/WSGI应用程序中的持久数据库连接

我希望在django支持的Web应用程序中保持对第三方遗留数据库的持久连接.

用户 -  INET  -  Web服务器 - 持久DB连接

我想保持Web应用程序和旧数据库之间的连接打开,因为为这个特殊的数据库创建新连接非常慢.

它不像通常的连接池,因为我需要存储每个Web用户的连接.用户"Foo"需要在Web服务器和旧版DB之间建立自己的连接.

到目前为止,我使用Apache和wsgi,但如果其他解决方案更合适,我可以改变.

到目前为止我使用django.在这里我也可以改变.但是痛苦会更大,因为已经有很多代码需要再次集成.

到目前为止,我使用Python.我想Node.js在这里会更合适,但改变的痛苦太高了.

当然需要某种超时.如果N分钟没有来自用户"Foo"的http请求,那么持久连接将需要关闭.

怎么能解决这个问题?

更新

我叫它,DB但它不是通过settings.DATABASES配置的数据库.这是一个奇怪的,传统的,不是广泛的类似DB的系统,我需要集成.

如果我现在有50个人在线使用网络应用程序,那么我需要有50个持久连接.每个用户一个.

用于连接到DB的代码

我可以在每个请求中执行此行:

strangedb_connection = strangedb.connect(request.user.username)
Run Code Online (Sandbox Code Playgroud)

但是这个操作很慢.使用连接很快.

当然strangedb_connection不能序列化,也不能存储在会话中:-)

python django database-connection

23
推荐指数
1
解决办法
2955
查看次数

与Apache DBCP的连接池

我想使用Apache Commons DBCP在Java应用程序中启用连接池(此处没有容器提供的DataSource).在Web的许多站点(包括Apache站点)中,库的使用基于以下代码段:

BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(connectURI);  
Run Code Online (Sandbox Code Playgroud)

然后通过getConnection()方法获得数据库连接.但是在其他站点 - 以及Apache站点 - 数据源实例是通过以下方式实现的:

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,null);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory);
ObjectPool objectPool = new GenericObjectPool(poolableConnectionFactory);
PoolingDataSource dataSource = new PoolingDataSource(objectPool);
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?我正在使用连接池BasicDataSource,或者我需要一个使用连接池的实例PoolingDataSource?是BasicDataSource线程安全的(我可以将它用作Class属性)还是我需要同步它的访问?

database-connection apache-commons-dbcp

22
推荐指数
2
解决办法
2万
查看次数

如何在Rails中关闭MySQL严格模式

升级到Rails 4,似乎MySQL严格模式现在默认为Rails连接.我这样说是因为我的Rails应用程序在保存超过255个字符的字符串值时会收到"Mysql2 :: Error:数据太长了".然而,我将相同的查询粘贴到MySQL控制台(其中报告全局严格模式已关闭)并且它正常工作,只是截断警告.作为进一步的证据,它在这里说 "Rails 4默认使用严格模式".

我的问题是如何从Rails应用程序中关闭严格模式?我宁愿避免升级所有东西来支持它.

mysql database-connection ruby-on-rails strict ruby-on-rails-4

22
推荐指数
4
解决办法
7831
查看次数

与Java和oracle XE之间的数据源连接的OCI和THIN驱动程序连接有什么区别?

我写了下面的代码为java,并使用3路(OCI,薄,数据源),代码成功运行的Oracle 10g XE之间的连接,但不知道跟数据源连接薄和OCI之间的差异.

1-

public static void main (String args[]) throws SQLException
 {
  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:oracle:thin:hr/hr@localhost:1521/XE");
  Connection con = ods.getConnection();
  System.out.println("Connected");
  con.close();
 }
Run Code Online (Sandbox Code Playgroud)

2-

public static void main(String args[])
     {
      try
      {
       // load oracle driver
      Class.forName("oracle.jdbc.driver.OracleDriver");
      // connect using Thin driver
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");
      System.out.println("Connected Successfully To Oracle");
      con.close();
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
      }
 }
Run Code Online (Sandbox Code Playgroud)

3-

public static void main(String args[])
     {
      try
      {
       // load oracle driver
      Class.forName("oracle.jdbc.driver.OracleDriver");
      // connect using Native-API (OCI) …
Run Code Online (Sandbox Code Playgroud)

java oracle database-connection

22
推荐指数
2
解决办法
3万
查看次数

将DB Connection对象传递给方法

想知道是否建议传递数据库连接对象(到其他模块)或让方法(在另一个模块中)负责设置它.我倾向于让方法设置它,以便在使用之前不必检查连接的状态,只是让调用者将任何所需的数据传递给设置连接所需的调用方法.

.net c# ado.net database-connection

21
推荐指数
3
解决办法
1万
查看次数

使用JDBC连接到PostgreSql的本地实例

我在linux机器上有一个正在运行的PostgreSql本地实例.当我使用psqlshell中的命令时,我成功登录而没有任何问题.我需要通过JDBC连接到PostgreSql,但我不知道究竟应该将什么作为url参数传递给DriverManager.getConnection().

它应该从jdbc:postgresql:但接下来会发生什么?

系统组告诉我,创建了一个像用户名一样的数据库.例如,如果我的用户是jutky一个名为db的jutky创建者,但是当我尝试打开一个连接时,jdbc:postgresql:jutky我收到一个错误

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "jutky" :(

附加信息

当我通过psql提示登录时,我没有提示输入密码,所以当我尝试通过JDBC登录时,我传递一个空字符串作为密码 - 它是正确的,还是我应该通过null什么?

当我输入psql --helpshell时,我看到其余的这一行:

Connection options:
   -h, --host=HOSTNAME      database server host or socket directory (default: "/var/run/postgresql")
Run Code Online (Sandbox Code Playgroud)

所以我理解我通过a连接到PostgreSql socket directory,这对JDBC中的URL字符串有用吗?


编辑

首先要感谢答案.

第二:它不是我第一次使用JDBC,特别是我第一次从JDBC连接到PostgreSql,所以我知道一般规则,我已经阅读了文档.但是在描述的情况下,我不确定如果实例正在运行socket directory并且我应该提供什么密码,我应该如何构造连接字符串.因为当我通过登录时,psql我根本没有提示输入密码.

提前致谢.

java postgresql connection-string database-connection jdbc

21
推荐指数
2
解决办法
5万
查看次数