我想使用代码而不是像"MySQL Migration Toolkit"这样的工具来做到这一点.我知道最简单的方法是打开一个连接(使用MySQL连接器)到DB1并读取其数据.打开与DB2的连接并将数据写入其中.有更好/最简单的方法吗?
我正在使用带有Entity Framework 4的.NET MySQL连接器,一切都运行良好,但我想在部署在服务器上时使用我的应用程序打包MySQL客户端DLL文件,因此我们不必担心在每台服务器上安装mysql,每个应用程序将只具有所需的正确副本.
为了实现这一点,我确保MySQL引用设置了"Copy Local",以便将它们复制到bin文件夹并将以下内容添加到我的app.config中:
<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
这工作,我能够在没有远程服务器上安装的MySQL部署的应用程序,但现在我有我的本地开发机器上(我一个问题做安装MySQL的连接器),和我得到这个错误时,EF尝试连接:
列'InvariantName'被约束为唯一.值'MySql.Data.MySqlClient'已存在.
如果我在app.config中注释掉我上面添加的XML,那么错误就会消失.这可能是因为系统上安装了相同的驱动程序并且位于machine.config中.
解决办法是什么?我宁愿不必手动注释和取消注释该行,具体取决于我为哪个系统构建应用程序.
我有关于.NET连接器的MySqlParameter的这个问题.
我有这个问题:
SELECT * FROM table WHERE id IN (@parameter)
Run Code Online (Sandbox Code Playgroud)
而MySqlParameter是:
intArray = new List<int>(){1,2,3,4};
...connection.Command.Parameters.AddWithValue("parameter", intArray);
Run Code Online (Sandbox Code Playgroud)
这个有可能?是否可以将int数组传递给单个MySqlParameter?另一个解决方案是将int数组转换为类似"1,2,3,4"的字符串,但是当我将它传递给MySqlParameter并将其识别为字符串时,它会像sql查询一样放入"1 \,2 \,3 \,4",这不会返回预期值.
@ UPDATE:似乎mysql连接器团队应该更努力地工作.
我有一个PreparedStatement,例如:
PreparedStatement preparedStatement = connect.prepareStatement("INSERT into employee (id, time, name" + "(?,?,?)",Statement.RETURN_GENERATED_KEYS);
ResultSet tableKeys = preparedStatement.getGeneratedKeys();
preparedStatement.executeUpdate();
tableKeys.next();
int autoGeneratedID = tableKeys.getInt(1);
preparedStatement.setInt(1,autoGeneratedID);
preparedStatement.setTimestamp(2, new java.sql.Timestamp(new java.util.Date().getTime()));
preparedStatement.setString(3, "Test");
preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
如您所见,Employee表具有自动递增的ID.我需要基本上使用preparedStatement自动添加它.谁能告诉我哪里出错了并纠正我?现在它只是给我一个与Statement相关的错误.
我已经阅读了很多这个例外,但我无法解决我的问题.
Mysql服务器正在运行.
我可以从NetBeans连接到它,但我无法从java代码连接到它.
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:243)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:32)
Caused …Run Code Online (Sandbox Code Playgroud) 尝试使用Visual Studio 2012 Update 3中的Connector/Net C#/ WinForms连接到我的Web主机上的MySQL,但收到以下错误消息:
使用方法'mysql_native_password'对用户'username@mydomain.com'的主机'1.1.1.1'进行身份验证失败,并显示消息:用户'username@mydomain.com'的访问被拒绝'''2.2.2.2'(使用密码:YES)
string connectionString = "SERVER=1.1.1.1;PORT=3306;DATABASE=databaseName;UID=username@mydomain.com;PASSWORD=mypassword;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)
我正在远程连接,将我的IP列入白名单(甚至临时列入白名单(%)以进行测试),三重检查用户名和密码以及IP.
我最初尝试没有域名的用户名(用户名而不是username@mydomain.com),但它给了我以下错误:
不再支持使用旧密码进行身份验证,请使用4.1样式密码.
非常感谢任何帮助,谢谢!
我在tomcat上运行spring/hibernate java应用程序,我在更新时看到这个时髦的错误:JDBC驱动程序没有返回预期的行数
Caused by: java.lang.NullPointerException
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:262)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
Run Code Online (Sandbox Code Playgroud)
我最近将我的mysql连接器更新到版本5.1.15.有没有人见过这样的东西?
我正在使用Python MySQL Connector,我在数据库中插入了一条记录,并且成功了.但是在Python代码中,我怎么知道它是否被插入?我的表没有主键.
def insert(params) :
db_connection = Model.get_db_connection()
cursor = db_connection.cursor()
try :
cursor.execute("""INSERT INTO `User`(`UID`, `IP`) VALUES(%s,%s);""", (params))
db_connection.commit()
except :
db_connection.rollback()
Model.close_db(db_connection)
return result
Run Code Online (Sandbox Code Playgroud) 是否有可用于MySQL JDBC连接器的javadoc?如果是这样,我在哪里可以找到它们?
谷歌搜索,我遇到了类MysqlDataSource等链接.但这是官方的吗?我想我正在寻找来自mysql.com或附属公司的东西.有这样的事吗?
以下逻辑适用于mysqldb模块(请参阅python mysqldb一个连接的多个游标),但我在cursor2.execute(sql)上使用mysql.connector收到以下错误
"发现未读结果."
我意识到我可以使用连接来组合这两个简单的sql语句,并避免需要第二个游标,但我的真实世界的例子更复杂,需要第二个sql语句.
假设我需要执行2个单独的sql语句(1个用于循环,1个用于循环),如何使用mysql.connector模块完成?
import datetime
import mysql.connector
db = mysql.connector.connect(user='alan', password='please', host='machine1', database='mydb')
cursor1 = db.cursor()
cursor2 = db.cursor()
sql = """
SELECT userid,
username,
date
FROM user
WHERE date BETWEEN %s AND %s
"""
start_date = datetime.date(1999, 1, 1)
end_date = datetime.date(2014, 12, 31)
cursor1.execute(sql, (start_date, end_date))
for (userid, username, date) in cursor1:
sql = """
select count(*)
from request
where assigned = '%s'
""" % (userid)
cursor2.execute(sql)
requestcount = cursor2.fetchone()[0]
print userid, requestcount
cursor2.close() …Run Code Online (Sandbox Code Playgroud)