我写了一个简单的bash脚本,我需要从数据库中获取' fake'数据,只想使用REPEAT命令模拟流量。我写了这一行:
mysql -u root -p'password' -h x.x.x.x -D mysql -se "SELECT REPEAT('A', 26214400);"
密码和登录都很好。我尝试连接到远程sql server(它的sucessfull),但不能真正执行REPEAT选择。什么可能是错的,如何解决这个问题?
我得到的输出:
REPEAT('A', 26214400)
NULL
我在PostgreSQL中做了同样的事情:
"$(psql -h x.x.x.x -d test -U postgres -c $'SELECT REPEAT(\'A\', 26214400);')"
效果很好,但我也需要mysql解决方案。
答案 0 :(得分:4)
我尝试了对MySQL的查询并收到此错误消息:
repeat()的结果大于max_allowed_packet(1048576) - 截断
所以你必须change max_allowed_packet
或使用较小的重复计数:
SELECT REPEAT('A', 1048576);
修改强>
如果您需要增加max_allowed_packet
值,则必须在服务器和客户端进行:
更改服务器运行(或在 my.cnf 中永久更改):
SET GLOBAL max_allowed_packet=26214400;
更改客户端添加选项--max_allowed_packet=26M
到 mysql 命令行:
mysql --max_allowed_packet=26M -u root -p'password' -h x.x.x.x -D mysql -se "SELECT REPEAT('A', 26214400);"
指定比SELECT输出大小稍大的max_allowed_packet
。
答案 1 :(得分:1)
我不确定你的shell命令是否正确。 -p参数将提示输入密码,而--password ='your_password'将向mysql发送密码。
下一个命令在我的shell中运行:
mysql -u root -h 127.0.0.1 --password='password' -D mysql -se "SELECT REPEAT('A', 26214400);"