- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是一个非常烦人的异常现象,只发生在 phpMyAdmin 中,而不是通过 php 的 mysqli 或 mysql 命令行发生。
我有两个数据库,foo
和 bar
。foo.bananaTable.monkeyId
是 bar.monkey.id
因此,无论您在哪里执行它,下面的 SQL 都可以按原样正常工作:
SELECT bananaTable.ripeness as 'ripeness'
FROM bar.monkey as monkey
JOIN foo.bananaTable as bananaTable ON bananaTable.monkeyId = monkey.id
现在,如果您导航到 phpMyAdmin 中的 foo
数据库,如果您没有在 SQL 中明确命名,它会有效地使用 foo
作为您的默认数据库。因此,下面的 SQL(在 JOIN 中省略 foo
db 范围)应该工作....
SELECT bananaTable.ripeness as 'ripeness'
FROM bar.monkey as monkey
JOIN bananaTable as bananaTable ON bananaTable.monkeyId = monkey.id
它在 php mysqli 和 mysql 命令行中确实有效。但它在 phpMyAdmin 中不起作用 您收到一条错误消息,提示 #1146 Table "bar.bananaTable"doesn't exist
。
这告诉我 FROM 完全劫持了我在 phpMyAdmin 中的默认数据库。事实上,如果您编辑它并再次运行它,您会注意到它实际上已将您移至 bar
数据库......WTF?
好的,所以我又尝试了一件事情:
USE foo;
SELECT bananaTable.ripeness as 'ripeness'
FROM bar.monkey as monkey
JOIN bananaTable as bananaTable ON bananaTable.monkeyId = monkey.id
...尝试强制它。仍然没有工作!
有人看过吗?这只是 phpMyAdmin 试图变得太聪明的产物吗?有没有以这个为中心的配置?或者这是我需要注意的 MySql 中的一些奇怪之处?我完全支持显式数据库命名,但出于安全原因,我们从一开始就指定默认值。
最佳答案
未指定 phpMyAdmin 版本,但似乎与版本无关。以下测试显示了最新版本的 phpMyAdmin 中的相同行为。在我看来像是一个错误。
-- http://demo.phpmyadmin.net/master-config
-- phpMyAdmin Demo Server: Currently running Git revision RELEASE_4_3_0RC2-1597-g6111104
-- Create table in test database
CREATE TABLE IF NOT EXISTS bar (
id int(11) NOT NULL,
`name` varchar(20) NOT NULL,
fooID int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
INSERT INTO bar (id, name, fooID) VALUES
(1, 'first', 1),
(2, 'second', 2);
ALTER TABLE bar
ADD PRIMARY KEY (id);
-- Create table in world database
CREATE TABLE IF NOT EXISTS `foo` (
`id` int(11) NOT NULL,
`val1` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `foo` (`id`, `val1`) VALUES
(1, 10),
(2, 15);
ALTER TABLE `foo`
ADD PRIMARY KEY (`id`);
-- from world database, where table foo resides
-- this query shows world as the default/selected database, as expected.
SELECT DATABASE();
-- this query should work from world, but fails with #1146 - Table 'test.foo' doesn't exist
SELECT b.*, f.val1
FROM test.bar AS b
LEFT JOIN foo AS f ON f.id = b.fooID
WHERE 1;
-- this query succeeds with an explicit world.foo, but it shouldn't be required
SELECT b.*, f.val1
FROM test.bar AS b
LEFT JOIN world.foo AS f ON f.id = b.fooID
WHERE 1;
关于phpMyAdmin:FROM 后忽略默认数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376409/
在 phpMyAdmin 的设置过程中,创建了一个 phpMyAdmin 用户,当我查看 phpMyAdmin 数据库权限时,我可以看到该用户。哪个 PHP 文件存储了该用户的密码? 最佳答案 保罗,
如何删除 phpMyAdmin 中的框架? 最佳答案 打开/usr/share/phpmyadmin/index.php(它在我的 Ubuntu 机器上)。不要忘记使用 sudo 或成为 root。
我读过官方文档说 phpMyAdmin 应该安装在 Web 服务器的文档根目录中。 我想问一下我是否必须为我拥有的每个 DocumentRoot 放置一个 phpMyAdmin,或者是否有一个很好的解
在遵循 youtube 上的 2019 教程后,无法在 virtualbox 上滚动的 kali linux 上安装 phpmyadmin, 尝试过 sudo apt-get install phpm
请帮忙,我总是在经历所有这些事情时遇到麻烦。当我只需要 phpmyadmin 有一个登录表单时,我就可以输入密码和用户名。 我不需要本文档中包含的所有内容。是否有针对初学者的教程,介绍如何在 phpm
标题几乎总结了我的问题。 我只想了解如何禁用远程登录到我的 phpmyadmin。 我宁愿只能从本地主机登录到 phpmyadmin。 最佳答案 编辑 /etc/phpmyadmin/apache.c
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我创建了具有两列(id、name)的数据库(产品)表项目,并且我向该列添加了值,然后显示此错误 Warning in .\libraries\DisplayResults.php#869 A non
我想将 SELECT 查询的结果导出为有效的 SQL INSERTS,并将其导入到另一个数据库中(某些记录被意外删除)。通常我会使用 PHPMyAdmin 的导出功能,但 PHPMyAdmin 在其中
当我尝试从 phpMyAdmin 导出数据库时出现错误。 请引用下面的截图。 我不知道这个问题是怎么发生的。 最佳答案 我遇到了同样的问题,我通过增加 php.ini 中 'max_input_var
无法访问 phpMyAdmin。我的 wampserver 版本是 2.2,使用 Windows 7。 localhost/phpmyadmin/ 当我打开它。 Internet Explorer 打
在我的工作中,我有 phpmyadmin 要使用的 SQL 数据库(本地和服务器上) 烦人的问题是,当我修改本地数据库结构(列、关系、新表)时,我不得不在服务器数据库上再次重做修改,因为当我备份本地数
我不喜欢 phpMyAdmin 中新的 AJAX 风格的导航树,我想将其更改为旧的。是否有一些我可以更改的配置指令? 旧版本:3.3.7 新版本:4.0.4 两者中的原始主题。 最佳答案 没有配置指令
我正在尝试更改 phpmyadmin 中的日期格式。我无法更改格式 我想将格式更改为 dd-mmm-yyyy。如何更改日期格式。请帮我解决它.. 最佳答案 您可以使用 phpMyAdmin 的 bro
我想在 PhpMyAdmin 中为包含此文本的所有字段更改文本“pelecard”。表名是 sales_flat_order_payment。我怎么能做到这一点? 谢谢你 最佳答案 SQL 是什么?
在远程 ubuntu 18 服务器上,当从其中一个表中打开 phpmyadmin 中的数据时,它会显示警告和弹出窗口(如 https://imgur.com/a/b5HGGV0 ),这是非常缺乏的..
默认情况下,phpMyAdmin 中的“主题”选项仅影响主题设置更改的浏览器的主题(可能存储在 cookie 中?)。如何将特定主题设置为所有用户的默认主题? 最佳答案 可以从 phpMyAdmin
我的表有全文列。如何设置列的默认宽度?我知道它在 index.php 页面顶部有完整/部分文本按钮...如何永久设置该值? 谢谢! 最佳答案 有一个名为 LimitChars 的配置值:http://
我是 mysql 的新手,所以我正在使用 phpmyadmin 在数据库中创建表。我有枚举类型的字段制造商,可能的值为“manufacturer1”,“manufacturer2”,... 我选择了
有谁知道是否或如何增加phpMyAdmin 中的导入大小限制?目前我的服务器限制为 50MB。 请注意,这与 php.ini 中的 upload_max_filesize 不同。该值设置为 2MB。
我是一名优秀的程序员,十分优秀!