我有一个问题,我的生产服务器运行Unix,我的开发服务器运行MS Windows.问题是Windows不区分大小写,而Unix则不区分大小写.因此,我在生产服务器上设置的表使用大写表名称,即"客户",在Windows上,表名称是小写的"客户".
所有这一切都很好,直到你需要从一个盒子到另一个盒子获取数据,并且你的SQL导出说是以小写形式插入"customers",并且presto"Unkown table customers".由于生产服务器当前处于共享主机方案中,因此我无法更改设置并安装忽略大小写的密钥.
所以我的问题是,有没有办法让Windows将表转换回正确的情况,或者是否有一些设置我可以包含在导出SQL文件中,这样我就可以上传数据而不会出现这个问题.
谢谢
UPDATE
以下是我发现的其他人遇到此问题.
如果您已经在Windows上设置了运行MySQL的表,则将lower_case_table_names = 2添加到my.cnf或my.ini文件中将不会自动更改表的大小写,即使它们最初是使用大写或混合大小写名称创建的.
即使在my.cnf文件中设置了lower_case_table_names = 2,CREATE TABLE "MyTable"也会创建一个新表"mytable" 而不是 "MyTable".
要解决此问题,请使用此方法
这是唯一可行的方法.希望这有助于某人.
我有一个浏览类别查询,我试图优化.我结束了使用临时; 在解释和查询中使用filesort在类别为60,000行的类型上很慢.如果我删除Order By子句,查询运行速度非常快.05秒,可以执行60,000行.使用Order By子句非常慢,大约5秒钟.部件包含大约500,000行,Parts_Category也是如此.
我有一个名为sort_index的零件(状态,级别,仓库,更新)的组索引
在解释的顶部我有| 所有| 使用临时; 使用filesort
所有其他索引显示正常.有人可以告诉我问题可能是什么?我没有想法.也许我应该重新安排这个查询,以便我可以获得更好的表现?
查询.
SELECT Parts.*, Image.type, Image.width, Image.height,
(SELECT name FROM Location_State WHERE id = Parts.state_id) AS state,
(SELECT name FROM Location_Region WHERE id = Parts.region_id) AS region,
(SELECT start_date FROM Promotion WHERE id = Parts.promotion_id) AS promotion_start_date,
(SELECT end_date FROM Promotion WHERE id = Parts.promotion_id) AS promotion_end_date
FROM ( SELECT parts_id FROM Parts_Category WHERE Parts_Category.category_id = '40'
UNION SELECT parts_id FROM Parts_Category WHERE Parts_Category.main_category_id = '40') cid
LEFT JOIN Image ON …Run Code Online (Sandbox Code Playgroud) 我想使用union作为子查询来优化查询.我不确定如何构建查询.我正在使用MYSQL 5
这是原始查询:
SELECT Parts.id
FROM Parts_Category, Parts
LEFT JOIN Image ON Parts.image_id = Image.id
WHERE
(
(
Parts_Category.category_id = '508' OR
Parts_Category.main_category_id ='508'
) AND
Parts.id = Parts_Category.Parts_id
) AND
Parts.status = 'A'
GROUP BY
Parts.id
Run Code Online (Sandbox Code Playgroud)
我想要做的是用( (Parts_Category.category_id = '508' OR Parts_Category.main_category_id ='508' )下面的联合替换这个 部分.这样我可以删除GROUP BY子句并使用直接col索引来提高性能.零件和零件类别表每个包含50万条记录,因此任何收益都会很大.
(
SELECT * FROM
(
(SELECT Parts_id FROM Parts_Category WHERE category_id = '508')
UNION
(SELECT Parts_id FROM Parts_Category WHERE main_category_id = '508')
)
as Parts_id
)
Run Code Online (Sandbox Code Playgroud)
谁能给我一个如何重写的线索?我已经尝试了几个小时但是无法得到它,因为我只是对MySQL很新.
我试图获得2个无线电选项的选定值(1和2)
并将其传递给自动完成的extraParams:value
到目前为止,我有这个
extraParams: { search_option: $('input[name=search_option]:checked').val() },
Run Code Online (Sandbox Code Playgroud)
问题是如果收音机是更改,则值不会更新.
任何想法,我怎么能做到这一点
谢谢
我有几千行,其中包含3位数字,以100开头,范围为199,我需要以0为前缀.还有数千个其他数字4位数字,我不想改变.
我需要找到范围内的所有3位数字,并且前缀只有100-199和0之间的前缀,因为它们是4位数,例如100> 0100,104> 0104,依此类推.这些数字也可以是步骤,例如110接下来是124.
有没有办法使用SQL来做到这一点?因为我不想手动改变这些!
非常感谢
在PHP中,如何在类中的函数中使用外部$ var?例如,假设$ some_external_var设置为true,你有类似的东西
class myclass {
bla ....
bla ....
function myfunction() {
if (isset($some_external_var)) do something ...
}
}
$some_external_var =true;
$obj = new myclass();
$obj->myfunction();
谢谢
mysql ×4
autocomplete ×1
jquery ×1
optimization ×1
parameters ×1
php ×1
sql ×1
sql-order-by ×1
union ×1