当我尝试在 Navicat(APP Store版本)创建 Snowflake 服务器连接时,出现“需要 Snowflake ODBC 驱动程序。”的报错消息,这是什么意思,我该怎么办?
更新于 2025年5月19日 10:59
可应用操作系统:macOS
可应用 Navicat 产品:Navicat for Snowflake、Navicat Premium(App Store 版本)
Snowflake ODBC Driver 是连接 Snowflake 数据库时所需的驱动程序。
安装说明
1. 下载和安装 macOS 平台的 ODBC 驱动器(https://developers.snowflake.com/odbc/)
2. 重启 Navicat
3. 测试连接
问题修复:“需要 Snowflake ODBC 驱动程序。”
如果 Navicat 继续显示此消息“需要 Snowflake ODBC 驱动程序。”请按照以下附加步骤将 Snowflake ODBC 驱动程序安装到 Navicat App Store 版本可访问的位置。
1. 复制脚本:
复制以下脚本,并在 macOS 设备上将其保存为configure_snowflake_odbc.sh 脚本文件。
#!/bin/bash # Step 2: Verify the Driver Installation echo "Step 2: Verifying Snowflake ODBC driver installation..." # Check if the driver files exist in /opt/snowflake if [ ! -d "/opt/snowflake" ]; then echo "Error: Snowflake ODBC driver not found in /opt/snowflake." exit 1 fi echo "Snowflake ODBC driver found in /opt/snowflake." # Check if the driver entry exists in ~/Library/ODBC/odbcinst.ini or /Library/ODBC/odbcinst.ini USER_ODBCINST_INI="$HOME/Library/ODBC/odbcinst.ini" SYSTEM_ODBCINST_INI="/Library/ODBC/odbcinst.ini" if [ -f "$USER_ODBCINST_INI" ] && grep -q "\[Snowflake\]" "$USER_ODBCINST_INI"; then echo "Snowflake driver entry found in $USER_ODBCINST_INI." DRIVER_ENTRY=$(grep -A 1 "\[Snowflake\]" "$USER_ODBCINST_INI") elif [ -f "$SYSTEM_ODBCINST_INI" ] && grep -q "\[Snowflake\]" "$SYSTEM_ODBCINST_INI"; then echo "Snowflake driver entry found in $SYSTEM_ODBCINST_INI." DRIVER_ENTRY=$(grep -A 1 "\[Snowflake\]" "$SYSTEM_ODBCINST_INI") else echo "Error: Snowflake driver entry not found in $USER_ODBCINST_INI or $SYSTEM_ODBCINST_INI." exit 1 fi # Step 3: Create or Update /Library/ODBC/odbcinst.ini echo "Step 3: Creating or updating /Library/ODBC/odbcinst.ini..." # Create /Library/ODBC directory if it doesn't exist sudo mkdir -p /Library/ODBC # Create /Library/ODBC/odbcinst.ini if it doesn't exist if [ ! -f "$SYSTEM_ODBCINST_INI" ]; then sudo touch "$SYSTEM_ODBCINST_INI" echo "Created $SYSTEM_ODBCINST_INI." fi # Ensure the [ODBC Drivers] section exists if ! grep -q "\[ODBC Drivers\]" "$SYSTEM_ODBCINST_INI"; then echo "[ODBC Drivers]" | sudo tee -a "$SYSTEM_ODBCINST_INI" > /dev/null echo "Snowflake = Installed" | sudo tee -a "$SYSTEM_ODBCINST_INI" > /dev/null echo "Added [ODBC Drivers] section to $SYSTEM_ODBCINST_INI." fi # Add the Snowflake entry under [ODBC Drivers] if it doesn't exist if ! grep -q "Snowflake[[:space:]]*=" "$SYSTEM_ODBCINST_INI"; then sudo sed -i '' '/\[ODBC Drivers\]/a\ Snowflake = Installed ' "$SYSTEM_ODBCINST_INI" echo "Added Snowflake entry under [ODBC Drivers] in $SYSTEM_ODBCINST_INI." else echo "Snowflake entry already exists under [ODBC Drivers] in $SYSTEM_ODBCINST_INI." fi # Add the Snowflake driver entry to /Library/ODBC/odbcinst.ini if ! grep -q "\[Snowflake\]" "$SYSTEM_ODBCINST_INI"; then # Append two newlines before the [Snowflake] section echo "" | sudo tee -a "$SYSTEM_ODBCINST_INI" > /dev/null echo "" | sudo tee -a "$SYSTEM_ODBCINST_INI" > /dev/null # Append the Snowflake driver entry echo "$DRIVER_ENTRY" | sudo tee -a "$SYSTEM_ODBCINST_INI" > /dev/null echo "Added Snowflake driver entry to $SYSTEM_ODBCINST_INI." else echo "Snowflake driver entry already exists in $SYSTEM_ODBCINST_INI." fi # Step 4: Copy the Driver to a Sandbox-Accessible Location echo "Step 4: Copying Snowflake driver to /Library/ODBC/snowflake..." # Create /Library/ODBC/snowflake directory if it doesn't exist sudo mkdir -p /Library/ODBC/snowflake # Copy the driver files to /Library/ODBC/snowflake sudo cp -r /opt/snowflake/* /Library/ODBC/snowflake/ echo "Copied Snowflake driver files to /Library/ODBC/snowflake." # Step 5: Update the ODBC Configuration echo "Step 5: Updating ODBC configuration..." # Update the driver path in /Library/ODBC/odbcinst.ini sudo sed -i '' 's|Driver[[:space:]]*=[[:space:]]*/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib|Driver = /Library/ODBC/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib|g' "$SYSTEM_ODBCINST_INI" echo "Updated driver path in $SYSTEM_ODBCINST_INI." # Find and update paths in simba.snowflake.ini echo "Updating paths in simba.snowflake.ini..." # Search for simba.snowflake.ini in all directories under /Library/ODBC/snowflake/ find /Library/ODBC/snowflake -type f -name "simba.snowflake.ini" | while read -r file; do echo "Found simba.snowflake.ini at: $file" # Update paths starting with /opt/snowflake to /Library/ODBC/snowflake sudo sed -i '' 's|/opt/snowflake|/Library/ODBC/snowflake|g' "$file" echo "Updated paths in $file." done echo "Configuration completed successfully!"
2. 打开终端:
在 macOS 设备上打开终端应用程序。
3. 使脚本文件可执行:
定位到你保存 configure_snowflake_odbc.sh 文件的位置。
运行以下命令:
chmod +x configure_snowflake_odbc.sh
4. 通过 sudo 运行脚本:
运行以下命令,使之以管理权限执行脚本:
sudo ./configure_snowflake_odbc.sh
5. 测试连接