8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 pysimplegui 循环中第一次发送后,socket.send 停止工作

lobati 2月前

51 0

我正在尝试构建一个简单的 GUI,包括一个二维码读取器,以便使用 Ubuntu 上的 Python 将数据发送到远程服务器,用于学校项目。我已经设置了一个简单的服务器来接收来自 sca 的消息...

我正在尝试构建一个简单的 GUI,包括一个二维码读取器,以便使用 Ubuntu 上的 Python 将数据发送到远程服务器,用于学校项目。我已经设置了一个简单的服务器,通过 tcp/ip 接收来自扫描仪的消息:

import socket
from Crypto.Cipher import AES


def main():

    # Server mit gegebener Adresse starten

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("192.168.1.40", 9999))
    server.listen()

    while True:
        client, address = server.accept()
        msg = client.recv(1024).decode('ASCII')
        print(msg)        

if __name__ == '__main__':
    main()

如果我运行一个简单的测试客户端,所有消息都会被收到:

import socket

client = socket.socket()
try:
    client.connect(("192.168.1.40",9999))
    for i in range(1,10):
        client.send("\nHallo Server, ich bin dein Client und will was\n".encode('ASCII'))
except:
    print("Server nicht verfügbar\n\n")

我在服务器上逐行打印了 9 条消息。

实际的 GUI 是

import PySimpleGUI as sg
from pyzbar import pyzbar
import cv2
import os
import socket
import math
from time import time, sleep
from Crypto.Cipher import AES

H1 = 0

def read_qr():
    vid = cv2.VideoCapture(0)
    qr = False 

    while(not qr):
        ret, frame = vid.read()
        qr = pyzbar.decode(frame)        

    duration = .1
    freq = 3000
    os.system('play -nq -t alsa synth {} sine {}'.format(duration,freq))

    qr = qr[0].data.decode().split(':::')
    vid.release()
    cv2.destroyAllWindows()

    return qr    


def si_msg(body):
    global H1
    H1 += 1
    H2 = socket.gethostname().split('-')[2]
    H3 = 0
    H5, H4 = math.modf(time())
    H6 = 2
    H7 = len(body.encode('ASCII'))
    si_msg = " ".join([str(H1), H2, str(H3), str(int(H4)), str(int(H5*10**8)), str(H6), str(H7), body])

    return si_msg


def main():

    sg.theme('PythonPlus')   
    status = 'Verbindung getrennt'
    socket.setdefaulttimeout(2.5)
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    layout = [  [sg.Text('Server-Adresse:'),sg.Input(key = 'k_server', default_text='192.168.1.40:9999')],
                [sg.Button('Server bestätigen')],
                [sg.Text('Status:'), sg.Text(status, key = 'k_status')],
                [sg.Exit()]]

    window = sg.Window('Virtueller Login', layout)



    while True:     

        event, values = window.read()
        if event == sg.WIN_CLOSED or event == 'Exit':
            break
        elif event == 'Server bestätigen':
            status = 'Verbindung zum Server wird hergestellt'
            window['k_status'].update(status)

            server = values['k_server'].split(':')

            try:
                client.connect((server[0],int(server[1])))
                status = 'Verbindung hergestellt: ausgeloggt'
                window['k_status'].update(status)
            except:
                status = 'Verbindungsversuch fehlgeschlagen'
                window['k_status'].update(status)
                sg.popup('FEHLER: Server nicht gefunden. Bitte prüfen Sie die Adresse oder wenden Sie sich an den Administrator')
                continue


        window.start_thread(lambda: read_qr(), 'Code gefunden')

        if event == 'Code gefunden':
            qr = values[event][0]
            msg = si_msg(qr)
            print(msg)
            client.send(msg.encode('ASCII'))
            sleep(2)



    client.close()
    window.close()
    

if __name__ == '__main__':
    main()

运行此主程序使我能够扫描二维码/条形码,该二维码/条形码已成功包装在标题中(我必须制作这个丑陋的东西)并在每次扫描时打印, H1 每次扫描时迭代扫描计数器。我在客户端或服务器上没有收到任何错误,但服务器只收到第一次扫描。

为了确保它与 pysimplegui 处理的多线程无关,我省略了以下行

window.start_thread(lambda: read_qr(), 'Code gefunden')

if event == 'Code gefunden':
   qr = values[event][0]
   msg = si_msg(qr)
   print(msg)
   client.send(msg.encode('ASCII'))
   sleep(2)

并用直接扫描命令替换它们(冻结 GUI):

qr = read_qr()[0]
msg = si_msg(qr)
print(msg)
client.send(msg.encode('ASCII'))

这样我就可以启用连接、扫描代码、发送消息,然后循环似乎停止工作,我无法再扫描。我可以再次按下 GUI 的连接按钮,从而“重新连接”到服务器(从未断开连接?)再次扫描,但它不会向服务器发送消息,也不会第三次建立连接。

或者,简单地手动添加第二条消息也无法发送,这也不起作用:

qr = read_qr()[0]
msg = si_msg(qr)
print(msg)
client.send(msg.encode('ASCII'))
sleep(0.5)
msg = si_msg(qr)
print(msg)
client.send(msg.encode('ASCII'))

计数器迭代并打印,但没有发送第二条消息,连接似乎丢失,我可以重新连接,再次扫描(不发送任何消息),就是这样,再也没有第三次机会。

由于我没有收到任何错误,我对此有些困惑。我认为这与 pysimplegui 无关,因为连续的手动消息也没有发送,但我不知道,并乐意提供任何帮助...

帖子版权声明 1、本帖标题:在 pysimplegui 循环中第一次发送后,socket.send 停止工作
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由lobati在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您正在循环发送,但您没有循环接收:您每接受一个连接就接收一条消息。您需要一个内部接收循环,该循环可能需要位于由接受循环启动的单独线程中。

  • 但是我确实收到了多条没有内部接收循环的消息,因为我的第一个例子就是这样的,并且下面的 player0 的回答也可以用相同的接受和获取循环来接收多条消息,尽管仍然没有解决我原来的问题

  • 尝试:

    import PySimpleGUI as sg
    import socket
    from threading import Thread
    from queue import Queue
    from pyzbar import pyzbar
    import cv2
    from time import time
    import math
    
    H1 = 0
    
    def read_qr(q):
        vid = cv2.VideoCapture(0)
        qr = False
        while not qr:
            ret, frame = vid.read()
            qr = pyzbar.decode(frame)
        qr_data = qr[0].data.decode().split(':::')
        vid.release()
        cv2.destroyAllWindows()
        q.put(qr_data)
    
    def si_msg(body, counter):
        global H1
        H1 += 1
        H2 = socket.gethostname().split('-')[2]
        H3 = 0
        H5, H4 = math.modf(time())
        H6 = 2
        H7 = len(body.encode('ASCII'))
        si_msg = " ".join([str(counter), H2, str(H3), str(int(H4)), str(int(H5 * 10**8)), str(H6), str(H7), body])
        return si_msg
    
    def connect_to_server(server_address, port):
        try:
            client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            client.connect((server_address, port))
            return client
        except Exception as e:
            print(f"Error connecting to server: {e}")
            return None
    
    def main():
        sg.theme('PythonPlus')
        status = 'Verbindung getrennt'
        server_address = ""
        port = 0
    
        layout = [
            [sg.Text('Server-Adresse:'), sg.Input(key='k_server', default_text='192.168.1.40')],
            [sg.Text('Port:'), sg.Input(key='k_port', default_text='9999')],
            [sg.Button('Server bestätigen')],
            [sg.Text('Status:'), sg.Text(status, key='k_status')],
            [sg.Button('Scan', disabled=True)],
            [sg.Exit()]
        ]
    
        window = sg.Window('Virtueller Login', layout)
        client = None
    
        qr_data_queue = Queue()
    
        def handle_scan():
            Thread(target=read_qr, args=(qr_data_queue,)).start()
    
        while True:
            event, values = window.read(timeout=100)
            if event == sg.WIN_CLOSED or event == 'Exit':
                break
            elif event == 'Server bestätigen':
                server_address, port = values['k_server'], int(values['k_port'])
                client = connect_to_server(server_address, port)
                if client:
                    status = 'Verbindung hergestellt: ausgeloggt'
                    window['Scan'].update(disabled=False)
                else:
                    status = 'Verbindungsversuch fehlgeschlagen'
                    sg.popup('FEHLER: Server nicht gefunden. Bitte prüfen Sie die Adresse oder wenden Sie sich an den Administrator')
                window['k_status'].update(status)
            elif event == 'Scan' and client:
                handle_scan()
            elif not qr_data_queue.empty():
                qr_data = qr_data_queue.get()
                if qr_data:
                    msg = si_msg(qr_data[0], H1)
                    print(msg)
                    client.send(msg.encode('ASCII'))
    
        if client:
            client.close()
        window.close()
    
    if __name__ == '__main__':
        main()
    
  • 如果我将 elif client and event == 'Scan': 替换为 if client:(并导入数学)它将给我一次扫描并发送消息。但我有两个问题:gui 冻结,这意味着我无法中止扫描操作,这使得线程变得毫无意义,并且我无法连续扫描,每次扫描后我都必须再次验证服务器。但至少我现在每次都可以扫描,每次都会发送消息,并且它不会在两条消息后停止工作我不明白为什么 elif 客户端不工作,因为客户端不会在下一次循环迭代中重置,并且没有其他事件

  • Onyx 2月前 0 只看Ta
    引用 6

    编辑:什么是“有效”:验证服务器,然后扫描,发送消息 -> 再次验证,再次扫描等。发送每一条消息 - 在我看来,第一次发送后连接以某种方式终止了?但 netstat 说服务器仍然处于连接状态,我可以在发送命令之前直接打印客户端 - 我现在更加困惑了,因为现在这似乎是一个与服务器相关的问题,但这不符合在简单客户端中连续发送多条消息的初始可能性?

  • 我目前正在制作一款 Android 游戏,该游戏将使用 Google Play Games 进行云保存。我已下载 Google Play Games SDK 并将其添加到 Unity,然后按照 Unity 的教程进行登录...

    我目前正在制作一款 Android 游戏,该游戏将使用 Google Play 游戏进行云保存。我已下载 Google Play 游戏 SDK 并将其添加到 Unity,并按照 Unity 的教程进行登录( https://docs.unity.com/ugs/manual/authentication/manual/platform-signin-google-play-games )。我已按照不同的步骤进行设置(为 Android 和 Web 添加了 OAuth,将自己添加为测试人员,并在我的设备上进行了测试),但似乎无法使其正常工作。经过一些调试后,我意识到问题出在这行代码上 PlayGamesPlatform.Activate();

    以下是代码片段。我只包含了调用它的 void,以避免代码淹没该消息,但如果需要,我愿意分享更多代码。此 void 在 Start() 处被调用。

        void initialLogIn()
        {
    
            debugText.text += "Begin Log In | ";
            //Initialize PlayGamesPlatform
            PlayGamesPlatform.Activate();
            PlayGamesPlatform.DebugLogEnabled = true;
            debugText.text += "Activate Play Games Platform | ";
            LoginGooglePlayGames();
        }
    

    我希望在游戏加载时玩家可以自动登录他们的 Google Play 帐户,但是不会出现登录原生弹出窗口。

    我运行了 Android LogCat 并注意到出现了以下错误:

    2024-07-21 22:41:25.959 23612 23673 Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.PlayGames
    2024-07-21 22:41:25.959 23612 23673 Error Unity java.lang.ClassNotFoundException: com.google.android.gms.games.PlayGames
    2024-07-21 22:41:25.959 23612 23673 Error Unity     at java.lang.Class.classForName(Native Method)
    2024-07-21 22:41:25.959 23612 23673 Error Unity     at java.lang.Class.forName(Class.java:536)
    2024-07-21 22:41:25.959 23612 23673 Error Unity Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.games.PlayGames" on path: DexPathList[[zip file "/data/app/~~kEIMtZEHFF7OzIloMOW6LQ==/com.barkunjgames.dressipher-j24w2j_UTad-VS-G0swCrA==/base.apk"],nativeLibraryDirectories=[/data/app/~~kEIMtZEHFF7OzIloMOW6LQ==/com.barkunjgames.dressipher-j24w2j_UTad-VS-G0swCrA==/lib/arm64, /data/app/~~kEIMtZEHFF7OzIloMOW6LQ==/com.barkunjgames.dressipher-j24w2j_UTad-VS-G0swCrA==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
    2024-07-21 22:41:25.959 23612 23673 Error Unity     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
    2024-07-21 22:41:25.959 23612 23673 Error Unity     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    2024-07-21 22:41:25.959 23612 23673 Error Unity     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    2024-07-21 22:41:25.959 23612 23673 Error Unity     ... 2 more
    2024-07-21 22:41:25.959 23612 23673 Error Unity   at UnityEngine.AndroidJNISafe.CheckExceptio
    

    并且早些时候在 logcat 中出现了这个错误:

    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Format allocation info not found for format: 3b
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Format allocation info not found for format: 0
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 Invalid base format! req_base_format = (<unrecognized format> 0x0), req_format = (<unrecognized format> 0x3b), type = 0x0
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Unrecognized and/or unsupported format (<unrecognized format> 0x3b) and usage (CPU_READ_NEVER|CPU_WRITE_NEVER|GPU_TEXTURE|GPU_RENDER_TARGET|COMPOSER_OVERLAY 0xb00)
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Format allocation info not found for format: 3b
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Format allocation info not found for format: 0
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 Invalid base format! req_base_format = (<unrecognized format> 0x0), req_format = (<unrecognized format> 0x3b), type = 0x0
    2024-07-21 22:41:23.171 23612 23673 Error gralloc4 ERROR: Unrecognized and/or unsupported format (<unrecognized format> 0x3b) and usage (CPU_READ_NEVER|CPU_WRITE_NEVER|GPU_TEXTURE|GPU_RENDER_TARGET|COMPOSER_OVERLAY 0xb00)
    

    我尝试过的一些步骤包括:• 查看其他 Google 登录教程,看看我是否遗漏了任何步骤,或者登录是否可以与不同的代码一起使用• 在 Google 上查找解决此问题的不同方法(尝试了此评论建议的方法: https://github.com/playgameservices/play-games-plugin-for-unity/issues/3154#issuecomment-1293257681 )• 尝试在移动依赖解析器/外部依赖解析器中使用强制解析• 联系了一些程序员朋友

    我的问题是如何解决 AndroidJavaException :java.lang.ClassNotFoundException:com.google.android.gms.games.PlayGames 问题 并允许玩家使用他们的 Google Play 帐户登录?

    如果不可能,那么您还有其他解决方案可以让我允许云保存吗?


    我尝试在游戏开始时弹出 Google Play 登录窗口,但什么也没发生。我在 logcat 上收到一条消息,内容是 AndroidJavaException:java.lang.ClassNotFoundException:com.google.android.gms.games.PlayGames

  • Vy8 2月前 0 只看Ta
    引用 8

    我感到非常沮丧,并且参考了所有我能参考的内容(emacs wiki,相关的溢出问题),我觉得我几乎尝试了所有方法来将我的大写锁定重新绑定到控制,以便将其用作我的 c...

    我感到非常沮丧,并且参考了所有我能参考的资料(emacs wiki,相关的溢出问题),我觉得我几乎尝试了所有方法将我的 caps lock 重新绑定到 control,以便将其用作 emacs 中的 ctrl 模式。

    我使用过 gnome-tweaks,尝试过 .xmodmap 文件(包括在重启和运行时应用它 xmodmap ~/.xmodmap ,还尝试过使用该 ctrl:nocaps 选项编辑 /etc/default/keyboard。无论重启多少次,似乎都不起作用。我的 xmodmap:

    clear lock 
    clear control 
    keycode 66 = control_L 
    keycode 37 = control_L 
    add control = Control_L Control_R
    

    xev keyboardtester.com 成功将我的 caps 键读取为附加的 control_L,但无论我打开哪个 emacs(通过 rofi drun、通过 sudo、-nw、从 alacritty 调用它),它都无法识别已按下的 caps lock 键。有人以前处理过这个问题吗?我不确定是不是因为我使用的是 macbook/VMware Fusion,还是因为我尝试了太多路线,现在它们以某种方式发生冲突。任何帮助都感激不尽!

  • 好的,强力检查:我刚刚将服务器的 client.recv() 包装在一个 while True: 循环中,现在我收到了每条消息。虽然我不知道为什么它以前不起作用,但就我的理解而言,一旦接受的连接就不应该重新建立 - 如果它必须使用 .accept 命令执行某些操作,那么据我所知,这个简单示例不应该起作用...所以我将使用服务器并构建一些东西来检查连接是否是新的,如果是,则创建一个新的线程,循环遍历 .isalive() 函数之类的东西...

  • 引用 10

    在开发我的 Unity 项目时,我设置了一个带有 Windows 10 映像的虚拟机来测试一些多客户端功能。由于 Steam 连接限制,我需要设置整个项目

    在开发我的 Unity 项目时,我设置了一个带有 Windows 10 映像的虚拟机来测试一些多客户端功能。由于 Steam 连接限制,我需要在虚拟机上设置我的整个项目,包括 Unity Hub 和 Unity 编辑器。在 VM 上设置项目后,我尝试启动它,但出现了无法解释的错误。检查日志文件后,我找到了原因:

    [Physics::Module] Initialized MultithreadedJobDispatcher with 5 workers.
    [Package Manager] UpmClient::Connect -- Connected to IPC stream "Upm-1704" after 1.4 seconds.
    Rebuilding Library because the metadata folder could not be found!
    Source asset database requested to be recreated
    [Licensing::Client] Successfully resolved entitlements
    IPCStream (Upm-1704): IPC stream failed to read (Not connected)
    [Package Manager] Cancelled resolving packages after 126.49 seconds
    [Package Manager] Failed to resolve packages: operation cancelled.
    Exiting without the bug reporter. Application will terminate with return code 1
    

    我尝试了几种解决方法,例如设置一些环境变量、禁用虚拟机和主机系统上的防火墙或删除包管理器缓存。这些解决方法都无法改变错误。

    我在项目中使用了“Unity Hub 3.8.0”、“Unity Editor 2022.3.14f1”和大量第三方资源。对于我的虚拟机,我使用的是“Oracle VM VirtualBox 7.0.20”。

  • 导出 WORKSPACE_BASE=$(pwd)/workspace;docker run \ --pull=always \ -e SANDBOX_USER_ID=$(id -u) \ -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \ -v $WORKSPACE_BASE:/opt/workspace_base ...

    export WORKSPACE_BASE=$(pwd)/workspace;
    
    docker run \
        --pull=always \
        -e SANDBOX_USER_ID=$(id -u) \
        -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
        -v $WORKSPACE_BASE:/opt/workspace_base \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -p 3000:3000 \
        --add-host host.docker.internal:host-gateway \
        ghcr.io/opendevin/opendevin:0.5
    
    

    为什么终端是只读的?起初,我以为这是一个错误,但后来我在 GitHub 页面的屏幕截图上也看到了它。这是正常的吗?

    我也无法执行文件或使用浏览器,似乎只有代理可以使用终端并执行代码

  • 在 Ubuntu 22.04 上使用 Tableau Server 时,MySQL ODBC 驱动程序出现问题。尝试连接导致错误:[unixODBC][驱动程序管理器]无法打开 lib'/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w...

    在 Ubuntu 22.04 上使用 Tableau Server 时遇到 MySQL ODBC 驱动程序问题。尝试连接导致错误:

    [unixODBC][Driver Manager]Can't open lib '/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so' : file not found
    

    但文件存在:

        tableau@tableau:/tmp$ namei /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
        f: /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
         d /
         d usr
         d lib
         d x86_64-linux-gnu
         d odbc
         - libmyodbc8w.so
    
    

    最初系统安装在 AL2 上,使用 ODBC Mysql 驱动程序 5.xx Ofc,需要迁移。选择了 Ubuntu 22.04 LTS。驱动程序最初使用 8.2.x。

    在 Tableau 开发人员的“帮助”下,它被降级到 8.0.x。

    错误仍然存​​在。软件中似乎没有驱动程序调用的深度调试。问题肯定出在这里,因为没有尝试连接(根据转储)。

    当前配置:

    tableau@tableau:/tmp# cat /etc/odbc.ini 
    
    [tableau]
    Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
    Description = ODBC for MySQL
    SERVER = <my_server_replaced>
    PORT = <my_port_replaced>
    Database = <my_db_replaced>
    USER = <my_user_replaced>
    Password = <my_pwd_replaced>
    
    tableau@tableau:/tmp# cat /etc/odbcinst.ini 
    [MySQL ODBC 8.0 Unicode Driver]
    Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
    SETUP=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8S.so
    UsageCount=1
    
    [MySQL ODBC 8.0 ANSI Driver]
    Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8a.so
    SETUP=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8S.so
    UsageCount=1
    

    当前驱动程序:

    tableau@tableau# apt info -a mysql-connector-odbc
    Package: mysql-connector-odbc
    Version: 8.0.33-1ubuntu22.04
    Status: install ok installed
    Priority: optional
    Section: libs
    Maintainer: Oracle MySQL Product Engineering Team <[email protected]>
    Installed-Size: 23.4 MB
    Depends: dpkg-dev, mysql-community-client-plugins, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libodbc2 (>= 2.3.1), libodbcinst2 (>= 2.3.1), libssl3 (>= 3.0.0~~alpha1), libstdc++6 (>= 11)
    Conflicts: mysql-connector-odbc-commercial
    Homepage: http://dev.mysql.com/downloads/connector/odbc/
    Download-Size: unknown
    APT-Manual-Installed: yes
    APT-Sources: /var/lib/dpkg/status
    Description: MySQL ODBC driver
     This package allows you to connect to MySQL database servers using
     ODBC, the Open Database Connectivity abstraction layer which is
     understood by a variety of database tools that cannot talk to MySQL
     databases directly.
    

    没有问题:

    tableau@tableau:/tmp$ ldd -v /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
        linux-vdso.so.1 (0x00007ffee2b70000)
        libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x000073b38da27000)
        libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x000073b38cc00000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x000073b38da13000)
        libodbcinst.so.2 => /lib/x86_64-linux-gnu/libodbcinst.so.2 (0x000073b38d9fe000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000073b38c800000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000073b38d1e0000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000073b38c400000)
        /lib64/ld-linux-x86-64.so.2 (0x000073b38dad4000)
        libltdl.so.7 => /lib/x86_64-linux-gnu/libltdl.so.7 (0x000073b38d1d5000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000073b38d0ee000)
    
        Version information:
        /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so:
            libgcc_s.so.1 (GCC_3.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
            libresolv.so.2 (GLIBC_2.9) => /lib/x86_64-linux-gnu/libresolv.so.2
            libcrypto.so.3 (OPENSSL_3.0.0) => /lib/x86_64-linux-gnu/libcrypto.so.3
            libstdc++.so.6 (GLIBCXX_3.4.20) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (CXXABI_1.3.8) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.9) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (CXXABI_1.3.9) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.29) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.18) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.11) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (CXXABI_1.3) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.21) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (CXXABI_1.3.5) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4.15) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libstdc++.so.6 (GLIBCXX_3.4) => /lib/x86_64-linux-gnu/libstdc++.so.6
            libssl.so.3 (OPENSSL_3.0.0) => /lib/x86_64-linux-gnu/libssl.so.3
            libc.so.6 (GLIBC_2.28) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.33) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.7) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libssl.so.3:
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libcrypto.so.3 (OPENSSL_3.0.3) => /lib/x86_64-linux-gnu/libcrypto.so.3
            libcrypto.so.3 (OPENSSL_3.0.0) => /lib/x86_64-linux-gnu/libcrypto.so.3
        /lib/x86_64-linux-gnu/libcrypto.so.3:
            libc.so.6 (GLIBC_2.15) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.25) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.33) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.7) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.17) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.16) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libresolv.so.2:
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libodbcinst.so.2:
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libstdc++.so.6:
            libm.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libm.so.6
            ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
            libgcc_s.so.1 (GCC_4.2.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libgcc_s.so.1 (GCC_3.4) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libgcc_s.so.1 (GCC_3.3) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libgcc_s.so.1 (GCC_3.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.6) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.33) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.25) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.18) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.16) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.32) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.7) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.17) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3.2) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libgcc_s.so.1:
            libc.so.6 (GLIBC_2.35) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libc.so.6:
            ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
            ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
            ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
        /lib/x86_64-linux-gnu/libltdl.so.7:
            libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.34) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
        /lib/x86_64-linux-gnu/libm.so.6:
            ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
            libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
            libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
    
    tableau@tableau:/tmp$ isql -v tableau
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    

    AppArmor:尝试完全禁用->结果相同。日志中没有拒绝它。因此保持“原样”。

    将不胜感激任何提示或帮助!

  • 现在,OpenDevin 支持 可写 终端。

  • mysql 网站 上没有可用的预编译驱动程序 5.x

    作为解决方法,我从源代码构建了驱动程序 5.3.13,并将 odbcinst.ini 设置为:

    [MySQL ODBC 8.0 Unicode Driver]
    Driver=/usr/local/lib/libmyodbc5w.so
    UsageCount=1
    

    因此,最新的服务器会认为这是 8.x,但会使用 5.x...是的,如果配置名称包含 5.x -> 服务器将抛出错误。很奇怪 - 是的。但它正在运行。开发人员通过支持票没有评论此行为...

返回
作者最近主题: