我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个新数据库(A),创建一个新表(B),将数据导入B ,提交查询以获得我需要的内容,然后我删除B并删除A.
它对我来说很好,但我意识到ibdata文件大小正在迅速增加,我在MySQL中没有存储任何内容,但ibdata1文件已超过100 MB.
我使用或多或少的默认MySQL设置进行设置,有没有办法可以在一段固定的时间后自动缩小/清除ibdata1文件?
我正在导入MySQL转储并收到以下错误.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Run Code Online (Sandbox Code Playgroud)
显然,数据库中有附件,这使得插入非常大.
这是在我的本地机器上,从MySQL软件包安装MySQL 5的Mac.
我在哪里可以更改max_allowed_packet
以导入转储?
还有什么我应该设置的吗?
刚刚运行mysql --max_allowed_packet=32M …
导致了同样的错误.
我已经升级了我的系统,并为我正在处理的Web应用程序安装了MySql 5.7.9和php.我有一个动态创建的查询,当在旧版本的MySql中运行时,它可以正常工作.自升级到5.7后,我收到此错误:
SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'support_desk.mod_users_groups.group_id',它在功能上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容
请注意有关服务器SQL模式主题的Mysql 5.7的手册页.
这是给我带来麻烦的查询:
SELECT mod_users_groups.group_id AS 'value',
group_name AS 'text'
FROM mod_users_groups
LEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id
WHERE mod_users_groups.active = 1
AND mod_users_groups.department_id = 1
AND mod_users_groups.manage_work_orders = 1
AND group_name != 'root'
AND group_name != 'superuser'
GROUP BY group_name
HAVING COUNT(`user_id`) > 0
ORDER BY group_name
Run Code Online (Sandbox Code Playgroud)
我在这个问题上做了一些谷歌搜索,但我不明白only_full_group_by
弄清楚我需要做些什么来修复查询.我可以关掉这个only_full_group_by
选项,还是我需要做些什么呢?
如果您需要更多信息,请与我们联系.
我有一个MySQL表,如下所示:
id | name | parent_id
19 | category1 | 0
20 | category2 | 19
21 | category3 | 20
22 | category4 | 21
......
Run Code Online (Sandbox Code Playgroud)
现在,我想要一个MySQL查询,我只提供id [例如说'id = 19']然后我应该得到它的所有子id [即结果应该有id',21,22']. ...而且,孩子们的等级不知道它可以变化....
另外,我已经有了使用for循环的解决方案.....如果可能的话,让我知道如何使用单个MySQL查询来实现相同的功能.
我试图导入.sql文件,并在创建表时失败.
这是失败的查询:
CREATE TABLE `data` (
`id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`value` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`,`name`),
CONSTRAINT `data_ibfk_1` FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
我从同一个数据库导出.sql,我删除了所有的表,现在我试图导入它,为什么它失败了?
MySQL:无法创建表'./dbname/data.frm'(错误号:150)
我从事软件开发已有二十多年,使用C,Perl,SQL,Java,PHP,JavaScript和最近的Python进行编程.我从来没有遇到过一些问题,我无法通过一些仔细的思考调试,并且调试良好的调试print
语句.
我尊重很多人说我的技术是原始的,在IDE中使用真正的调试器要好得多.然而根据我的观察,IDE用户似乎没有使用我的石刀和熊皮进行更快或更成功的调试.我真诚地愿意学习正确的工具,我从未被证明使用可视化调试器具有令人信服的优势.
此外,除了如何设置断点和显示变量内容的基础知识之外,我从未阅读过如何使用IDE有效调试的教程或书籍.
我错过了什么?是什么让IDE调试工具比周到使用诊断print
语句更有效?
您能否建议显示更好的IDE调试技术的资源(教程,书籍,截屏视频)?
甜蜜的答案!非常感谢大家花时间.非常有启发性.我投了很多票,并且没有投票.
一些值得注意的要点:
在我所工作的每家公司,我发现人们仍然在ANSI-89标准中编写SQL查询:
select a.id, b.id, b.address_1
from person a, address b
where a.id = b.id
Run Code Online (Sandbox Code Playgroud)
而不是ANSI-92标准:
select a.id, b.id, b.address_1
from person a
inner join address b
on a.id = b.id
Run Code Online (Sandbox Code Playgroud)
对于这样一个非常简单的查询,可读性没有太大差异,但是对于大型查询,我发现将我的连接条件分组并列出表格可以更容易地查看我在连接中可能存在问题的位置,以及让我在WHERE子句中保留所有过滤功能.更不用说我觉得外连接比Oracle中的(+)语法更直观.
当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势吗?我会自己尝试,但是我们这里的Oracle设置不允许我们使用EXPLAIN PLAN - 不希望人们尝试优化他们的代码,是吗?
我正在寻找一个好的免费工具的建议,用于生成样本数据以便加载到测试数据库中.通过类比,可以为任何RDBMS 生成" lorem ipsum "文本.我正在寻找的功能包括:
INSERT
语句)生成,或者以适合批量导入的平面文件格式生成(通常更快).PS:我确实在StackOverflow上搜索了一个重复的问题,但我没找到.如果有的话,我会很高兴得到一个指针.
感谢大家的响应!我应该修改我的要求,即我使用Mac OS X作为我的主要开发环境,而不是Windows(虽然我确实说命令行界面是可取的,而且实际上排除了Windows).不过,特定于Windows的建议无疑会对这个问题的其他读者有用,所以,谢谢.
这是我的结论:
我试图在MySQL中创建一个带有两个外键的表,它引用了另外两个表中的主键,但是我得到一个错误:150错误,它不会创建表.
这是所有3个表的SQL:
CREATE TABLE role_groups (
`role_group_id` int(11) NOT NULL `AUTO_INCREMENT`,
`name` varchar(20),
`description` varchar(200),
PRIMARY KEY (`role_group_id`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `roles` (
`role_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50),
`description` varchar(200),
PRIMARY KEY (`role_id`)
) ENGINE=InnoDB;
create table role_map (
`role_map_id` int not null `auto_increment`,
`role_id` int not null,
`role_group_id` int not null,
primary key(`role_map_id`),
foreign key(`role_id`) references roles(`role_id`),
foreign key(`role_group_id`) references role_groups(`role_group_id`)
) engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
假设我有表student
,club
以及student_club
:
student {
id
name
}
club {
id
name
}
student_club {
student_id
club_id
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何找到足球(30)和棒球(50)俱乐部的所有学生.
虽然这个查询不起作用,但它是我迄今为止最接近的事情:
SELECT student.*
FROM student
INNER JOIN student_club sc ON student.id = sc.student_id
LEFT JOIN club c ON c.id = sc.club_id
WHERE c.id = 30 AND c.id = 50
Run Code Online (Sandbox Code Playgroud) mysql ×7
sql ×5
ansi-92 ×1
ansi-sql ×1
database ×1
debugging ×1
foreign-keys ×1
group-by ×1
ide ×1
innodb ×1
join ×1
phpmyadmin ×1
postgresql ×1
testing ×1