小编Ste*_*one的帖子

处理程序中的 MySQL 回滚

我有一个存储过程,如果出现任何问题,我想在其中回滚。为了做到这一点,我使用了这样的 EXIT HANDLER:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        ROLLBACK;
    end;
Run Code Online (Sandbox Code Playgroud)

但是这样,当我调用这个存储过程时,如果有任何错误,存储过程就会成功,我不知道实际问题是什么。我希望客户端 (php) 记录错误以便对其进行故障排除。所以我这样修改:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        get diagnostics condition 1
              @p1 = MESSAGE_TEXT;
        ROLLBACK;
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @p1;
    end;
Run Code Online (Sandbox Code Playgroud)

所以现在存储过程回滚而不是抛出处理程序拦截的异常。这很酷,但有时 MESSAGE_TEXT 超过 128 个字符,在这种情况下我得到:

错误代码:1648。条件项“MESSAGE_TEXT”的数据太长

当然这个解决方案是不可接受的:

DECLARE EXIT HANDLER FOR sqlexception 
    begin
        get diagnostics condition 1
              @p1 = MESSAGE_TEXT;
        ROLLBACK;
        SET @p1=SUBSTRING(@p1,1,128);
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @p1;
    end;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以拦截任何异常,回滚然后向客户端抛出相同的异常?非常感谢您的帮助

php mysql sqlexception handler

6
推荐指数
1
解决办法
2764
查看次数

AWS容器服务:设置max_map_count

我正在尝试在AWS容器服务上运行Elasticsearch.这里是我关注的文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode

应在/etc/sysctl.conf中永久设置vm_map_max_count设置:

$ grep vm.max_map_count /etc/sysctl.conf

vm.max_map_count = 262144

要在实时系统上应用该设置,请执行以下操作:sysctl -w vm.max_map_count = 262144

有没有办法通过脚本设置vm.max_map_count?每次运行新容器时我都不想手动执行此操作.

谢谢

amazon-web-services elasticsearch docker

6
推荐指数
1
解决办法
2366
查看次数

MySQL快速查询两个不同的索引,但组合成一个查询速度很慢.为什么?

我有一张200万行的表.我有两个索引(状态,性别)和(生日).

我觉得很奇怪,这个查询需要3.6秒或更长时间查询N°1

SELECT COUNT(*) FROM ts_user_core
WHERE birthday BETWEEN '1980-01-01' AND '1985-01-01'
    AND status='ok' AND gender='female';
Run Code Online (Sandbox Code Playgroud)

同样的:QUERY N°2

SELECT COUNT(*) FROM ts_user_core
WHERE status='ok' AND gender='female'
    AND birthday between '1980-01-01' AND '1985-01-01';
Run Code Online (Sandbox Code Playgroud)

虽然此查询需要0.140秒QUERY N°3

select count(*) from ts_user_core where (birthday between '1990-01-01' and '2000-01-01');
Run Code Online (Sandbox Code Playgroud)

此查询也需要0.2秒QUERY N°4

select count(*) from ts_user_core where status='ok' and gender='female'
Run Code Online (Sandbox Code Playgroud)

我希望第一个查询更快,这种行为怎么可能?我无法处理这个查询这么多时间.

这里的结果是: 在此输入图像描述

我知道我可以添加一个包含3列的新索引,但有没有办法在不为每个where子句添加索引的情况下获得更快的查询?

谢谢你的建议

mysql performance

5
推荐指数
1
解决办法
912
查看次数

如何测试Firebase消息传递refreshToken

我在我的移动应用程序中使用FCM.Firebase文档说明可以刷新令牌(在极少数情况下).我想测试刷新令牌后应用程序的行为方式,如何使令牌无效并触发刷新?

谢谢

firebase

5
推荐指数
1
解决办法
580
查看次数

Facebook图像预览仅在从Android共享时丢失

我在我的应用上添加了一个共享功能,如下所示:

Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/plain");

// Add data to the intent, the receiving app will decide what to do with it.
share.putExtra(Intent.EXTRA_TEXT, toShare);

startActivity(Intent.createChooser(share, getResources().getString(R.string.share)));
Run Code Online (Sandbox Code Playgroud)

当我选择与Facebook分享时,我可以看到正确的图像预览: 在此输入图像描述

但然后在Facebook上缺少图像预览: 在此输入图像描述

只有当我与Android共享时才会发生这种情况,如果我从iOS共享,则图像预览会正确显示.你知道什么是问题吗?以下是共享链接的示例:http://pixide.org/it/share/?t = F61CAD079F61F540757E569F68332275

谢谢

android share facebook

5
推荐指数
0
解决办法
141
查看次数

MySQL如何选择JSON数组

在 MySQL 5.7 中,我们有 JSON_ARRAY 对象。我想执行类似于 a 的操作SELECT GROUP_CONCAT(field),但将结果放入 JSON_ARRAY 中。

我当前的查询是:

SELECT GROUP_CONCAT(name) FROM users;
Run Code Online (Sandbox Code Playgroud)

结果:约翰、迈克尔、索菲亚

我希望结果是: ["john","michael","sofia"]

我当前的解决方案是:

select @j:=json_array_append(@j,'$',name) from users
Run Code Online (Sandbox Code Playgroud)

但这非常低效,因为它会为每一行重新计算。是否有可能更有效地实现这一目标?

mysql arrays group-concat

5
推荐指数
1
解决办法
2614
查看次数

如何翻译不同语言的城市名称

我有一个移动应用程序(iOS 和 Android),我需要用用户的语言翻译城市名称。我可以在移动设备或我的服务器(运行 php)上进行翻译。

截至目前,我设法翻译了国家/地区名称,这里是翻译所有可能语言的所有可能国家/地区的 java 代码:

import java.util.Locale;

public class ListCountry {

public static void main(String[] args) {

ListCountry obj = new ListCountry();

obj.getListOfCountries();

}

public void getListOfCountries() {

String[] locales = Locale.getISOCountries();

for (String countryCode : locales) {

    Locale obj = new Locale("", countryCode);
    String[] lingue = Locale.getISOLanguages();

    for (String languageCode : lingue) {

        System.out.println("Country Code = " + obj.getCountry() 
        + ", Country Name = " + obj.getDisplayCountry(new Locale(languageCode)) + ", language = " + (new Locale(languageCode)).getDisplayLanguage());
    } …
Run Code Online (Sandbox Code Playgroud)

php java translation icu

3
推荐指数
1
解决办法
7118
查看次数

MySQL在启动时崩溃

我正在使用wamp的笔记本电脑上进行开发,而mysql几周后运行良好。今天,在启动mysql崩溃60秒后,我在日志中发现以下错误:

2016-03-17T20:34:37.662021Z 0 [ERROR] InnoDB: Cannot allocate 4294956804 bytes of memory after 60 retries over 60 seconds. OS error: Not enough space (12). Check if you should increase the swap file or ulimits of your operating system. Note that on most 32-bit computers the process memory space is limited to 2 GB or 4 GB.
2016-03-17 21:34:37 0x2b74  InnoDB: Assertion failure in thread 11124 in file ut0ut.cc line 938
InnoDB: Failing assertion: !m_fatal
InnoDB: We intentionally generate a memory trap. …
Run Code Online (Sandbox Code Playgroud)

mysql crash

2
推荐指数
1
解决办法
5561
查看次数

Android:如何减少TabLayout内部填充

我正在使用TabLyout,但是文本和文本下方的行之间的距离太大。 在此处输入图片说明

当然我已经尝试过填充,但是没有运气,有什么办法可以减少这种内部填充吗?

这是我的代码:

<android.support.design.widget.TabLayout
                    android:id="@+id/tab_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="0dp"
                    app:tabPadding="0dp"
                    app:tabGravity="center"
                    app:tabIndicatorColor="#ddffffff"
                    app:tabMaxWidth="0dp"
                    app:tabMode="scrollable"
                    android:visibility="visible"
                    app:tabSelectedTextColor="#ffffff"
                    app:tabTextColor="#ffffff" />
Run Code Online (Sandbox Code Playgroud)

谢谢

android android-tablayout

1
推荐指数
2
解决办法
2148
查看次数

还需要 Facebook 活动吗?

几个月前我开始在 Android 上开发我的应用程序,今天我在清单中发现了以下内容:

<application android:label="@string/app_name" ...>
    ...
    <activity android:name="com.facebook.FacebookActivity" />
    ...
</application>
Run Code Online (Sandbox Code Playgroud)

如您所见,有 Facebook 活动。如果您阅读此处的Facebook 文档,您可以找到:

  • 将适用于 Android 的 Facebook SDK 添加到您的移动开发环境
  • 获取正确配置并链接到您的 Android 应用程序的 Facebook 应用程序 ID。请参阅 - Android 入门,添加 Facebook 应用程序 ID
  • 生成 Android 密钥哈希并将其添加到您的开发者资料中
  • 添加 Facebook Activity 并将其包含在 AndroidManifest.xml 中

但如果您阅读入门文档,您将找不到任何对 Facebook Activity 的引用。不再需要 Facebook 活动了吗?

谢谢

android facebook

1
推荐指数
1
解决办法
1292
查看次数