昨天我正在研究一个shell脚本,以便对MySQL数据库执行一些中等复杂的表插入.当然,我mysql打开了一个客户端shell窗口,用于运行describe命令,示例查询以及在测试周期之间删除测试行.
是的,这是一个实时的生产数据库.
在我完成编码的时候,我要求一位同事在运行脚本来处理批处理条目之前查看我的工作.我们讨论了所有事情,他同意他看起来是正确的,我解雇了剧本.没问题.
然后我回到我的实时shell,从历史中拉出一行,更改了where子句以查看生成的插入,然后按[Enter] ...
...不幸的是,我没有看过我正在编辑的整个命令!这是一个delete声明,而不是一个select.
糟糕!
好的,所以我知道我可以设置一个不同的DBMS服务器,将这个数据库的转储恢复到那个并完成我的所有测试.我们都知道,这本来会更安全,更有纪律.我们都知道,有时在现场商店工作更为便利.(在这种情况下,风险比您预期的要低一些......有问题的数据库用于批处理,我们能够从10分钟内只有20分钟的备份恢复delete).
但是,这会让人想到一个问题:mysql客户端shell 是否有一些选项(或某些补丁)只读它?是否有一些选项可以修改它在交互历史记录中存储的内容?(某些东西会标记delete并且drop table类似地"危险"声明为"在重新执行之前提示验证?" mysql客户端是否具有与该bash HISTIGNORE功能类似的内容?
什么是更安全的方式来完成这种工作(缺少完全独立的数据库开发副本)?
在这里我的问题; 在这种情况下,它抱怨具有相同连接名称的重复连接:
Test::Test(QString connectionName)
{
db=QSqlDatabase::addDatabase("QMYSQL",connectionName);
}
int main(int argc, char *argv[])
{
QString connectionName=QString("test");
QCoreApplication a(argc, argv);
Test myDb(connectionName);
Test myDb2(connectionName);
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案:
Test::Test(QString connectionName)
{
if(!QSqlDatabase::contains(connectionName))
db=QSqlDatabase::addDatabase("QMYSQL",connectionName);
else
db=QSqlDatabase::database(connectionName);
}
int main(int argc, char *argv[])
{
QString connectionName=QString("test");
QCoreApplication a(argc, argv);
{
Test myDb(connectionName);
Test myDb2(connectionName);
}
QSqlDatabase::removeDatabase(connectionName);
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
1-)这是处理这个问题的好方法吗?
2-)你还有其他建议吗?
3-)你认为这是Qt的缺点吗?
c++ qt database-connection mysql-management database-management
我正在尝试使用mysql,我对如何处理应用程序的连接存有疑问.
我现在正在做的是打开一个连接并保持活着,直到我终止我的程序.我偶尔做一个mysql_ping(),然后用MYSQL_OPT_RECONNECT启动连接.
另一个选择(我能想到),就是在做任何需要我连接数据库的事情之前启动一个新连接,并在完成之后关闭它.
这两种方法的优点和缺点是什么?长连接的"副作用"是什么?最常用的处理方法是什么?
干杯;)
一些额外的细节
在这一点上,我保持连接活着,我不时地ping它到现在它的状态并在需要时重新连接.
尽管如此,当快速连续发生查询时存在一致的并发性时,我得到"服务器已经消失"的消息,并在一段时间后重新建立连接.
我想知道这是否是长时间连接的副作用,或者这只是一个糟糕的mysql服务器配置的情况.
有任何想法吗?
我正在使用MAMP(OS-X 10.6.6),我想将mySQL db文件夹移动到我的dropbox文件夹中.MySQL服务器MAMP运行存储其数据库
/Library/Application Support/appsolute/MAMP PRO/db/mysql
Run Code Online (Sandbox Code Playgroud)
..我无法让它遵循符号链接或别名到mysql文件夹.
有没有办法改变mySQL用于存储数据库的路径?在MAMP论坛上,他们说这是不可能的,但我想在MAMP正在运行的任何mySQL服务器上必须有某种配置文件,可以更改为指定使用过的DB的替代位置..?
有谁知道如何实现这一目标?将数据库存储在Dropbox上是我需要解决的最后一个元素,以便能够从我的不同计算机处理我的项目.
我们有一个客户端应用程序通过ODBC连接器连接到我们的在线MySQL数据库(5.1.44-community-log)(该服务器是托管*专用网络服务器).这非常好用.但是,我无法使用SSL工作.这是我到目前为止所做的:
1. MySQL服务器
我有服务器管理器*使用SSL设置MySQL,这是'证明':
mysql> SHOW VARIABLES LIKE '%ssl%';
Run Code Online (Sandbox Code Playgroud)
结果是这个回应:
+---------------+---------------------------------+
| Variable_name | Value |
+---------------+---------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /***/mysql-cert/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /***/mysql-cert/server-cert.pem |
| ssl_cipher | |
| ssl_key | /***/mysql-cert/server-key.pem |
+---------------+---------------------------------+
Run Code Online (Sandbox Code Playgroud)
问题:服务器配置正确吗?我猜它是......
2.证书
我已经购买了真正的证书(通过我的服务器管理器).它们位于上面显示的目录中.我还从该目录下载了client-cert.pem,client-key.pem和ca-cert.pem.
3.具有REQUIRE [SSL | X509]的MySQL用户
我创建了一个新用户,然后使用SSL从任何位置(用于测试)授予它访问权限:
GRANT USAGE ON *.* TO 'somevaliduser'@'%' IDENTIFIED BY PASSWORD 'somevalidpass' REQUIRE X509
Run Code Online (Sandbox Code Playgroud)
4. ODBC客户端
我(刚下载并安装):mysql-connector-odbc-5.1.8-winx64.msi(64位)因为我的机器是64位Windows 7机器(所以这不是什么错误).
我创建了一个像这样配置它的用户DSN(没有在选项卡上设置选项),这表明它成功连接到服务器(但不使用 …
我需要导入到MySQL中的大量文本数据。我在MacBook上进行此操作,但没有足够的空间,因此我想将其存储在外部硬盘驱动器中(此刻我并不真正担心速度-只是用于测试)。
最好的方法是什么?
我在mac OSX 10.5上安装了MySql 5.5而不是使用.dmg软件包安装程序.在我使用sudo模式启动sql server后执行所有安装步骤后,我收到以下错误,服务器没有启动.
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
110808 21:22:12 [ERROR] Aborting
Run Code Online (Sandbox Code Playgroud)
我在/ usr/local/msql目录中的任何地方都找不到./mysql-bin.index文件.
任何人都可以告诉如何解决这个问题?谢谢.
我们公司有一个简单的"crm-like"软件.有一些复杂的查询花了一些时间,每日使用查询...所以我测试一些修改使用临时表来替换我们需要的所有复杂的连接和子查询.
到目前为止进展顺利,速度达到90%以上.
由于它是一个网络应用程序(codeigniter + mysql),我打算把它放在"生产测试"环境中,所以50%的用户可以帮我测试它.我想监视活动的表,如果可能的话,监视每个连接.
我的问题是 - 有什么办法可以查看mysql实例中活动的所有TEMPORARY TABLES吗?也许查看其数据?
我读了一些关于插件或类似的东西,但这篇文章太乱了,我很理解.
非常感谢和抱歉我的英语 - 不是我的母语.
我已经阅读了有关MySQL复制的内容,我需要更改一些配置,但我找不到文件my.cnf或my.ini.我不知道我有哪个MySQL版本,但很久以前我已经下载了它,作为.zip.我的盒子运行Windows 7 64.我在哪里可以找到这个文件?我应该创建吗?哪里?谢谢.
mysql configuration mysql-management configuration-files database-replication
当我尝试使用转储建立MySQL数据库时,我收到以下错误消息
ERROR 2006 (HY000) at line 312: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)
广泛的谷歌搜索(在此论坛搜索)之后,我发现我不得不增加max_allowed_packet了在my.ini文件中.我已为此参数尝试了各种值(包括非常大的值),但我无法摆脱此错误.
即使我在命令行中指定了--max_allowed-packet选项(如下所示)也没有用处
C:\Users\Panora>mysql --user=root --password=root --max-allowed-packet=600M db < dump.sql
ERROR 2006 (HY000) at line 50973: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令创建转储文件,仍然没有用
mysqldump --opt --skip-extended-insert --max_allowed_packet=10M --user=root --password=root db > dump.sql
Run Code Online (Sandbox Code Playgroud)
请告诉我我真正缺少的东西.
mysql-management ×10
mysql ×9
c++ ×1
database ×1
hard-drive ×1
macos ×1
mamp ×1
mysqldump ×1
odbc ×1
osx-leopard ×1
qt ×1
ssl ×1
temp-tables ×1
workflow ×1