尝试使用下面的代码在Linux / Ubuntu服务器(客户端)和Windows服务器(主机)之间建立数据库连接,但由于某种原因它失败了。 IP地址没问题(ping好了),端口3050打开,用户名和密码也正确,那么可能是什么问题?下面的代码返回“连接失败!!!”。是的,安装了php / interbase库。
ibase_errmsg()
只是一个更新。事实证明连接正常,问题与用户名和/或密码有关。 @IBAction func butLogin(_ sender: AnyObject) {
}
@IBAction func butSignup(_ sender: AnyObject) {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
txtUsername.layer.borderWidth = 1
txtUsername.layer.borderColor = UIColor.white.cgColor
txtUsername.layer.cornerRadius = 20
txtUsername.clipsToBounds = true
txtPassword.layer.borderWidth = 1
txtPassword.layer.borderColor = UIColor.white.cgColor
txtPassword.layer.cornerRadius = 20
txtPassword.clipsToBounds = true
butLogin.layer.cornerRadius = 20
butLogin.clipsToBounds = true
butSignup.layer.cornerRadius = 20
butSignup.clipsToBounds = true
Bug:
Value of type '(AnyObject) -> ()' has no member 'layer'
Value of type '(AnyObject) -> ()' has no member 'clipsToBounds'
返回以下错误
“您的用户名和密码未定义。请您的数据库管理员设置Firebird登录。”但是,用户名和密码已经过多次三次检查,应该没问题。
答案 0 :(得分:1)
尝试使用php ibase_connect连接到interbase XE7(V12)时遇到相同的错误。我的interbase服务器托管在Windows 10计算机中。
确保已安装php / interbase库,并将其列出为get_loaded_extensions()
的结果。
就我而言,问题出在内部数据库密码摘要中。对于较旧的interbase,它使用“ des-crypt”摘要;对于较新的版本,它使用“ sha-1”摘要。我只是将密码摘要更改为“ des-crypt”,然后它起作用了。 这是使用isql.exe更改内部数据库的密码摘要的步骤。
在C:\ProgramData\Application Data\Embarcadero\InterBase\gds_db
或c:\ program文件下找到admib.ib,然后按照说明进行操作
1. SQL> CONNECT "C:\Program Files (x86)\borland\interbase\admin.ib" (hit enter)
2.CON> user 'SYSDBA' password 'masterkey';
3.SQL> ALTER DATABASE SET PASSWORD DIGEST 'DES-CRYPT';
4.SQL> UPDATE USERS SET PASSWORD_DIGEST = 'DES-CRYPT' WHERE USER_NAME='sitesync';
5.SQL> COMMIT;
然后打开gsec.exe并键入以下命令
gsec -user sysdba -password masterkey (hit enter)
modify sitesync -pw newpassword (hit enter and password changed)
再次返回sha-1
6. SQL> ALTER DATABASE SET PASSWORD DIGEST 'SHA-1';
7 commit;
就是这样。请注意,我是第一次使用php和interbase。请原谅我遗漏的任何细节或错字。
答案 1 :(得分:0)
是否可能需要将反斜杠转义到C:\\ folder \\ DBFILE.IB中,否则C:\ folder \ DBFILE.IB将转换为垃圾路径,IBASE不会这样做找到并给出相当不精确的错误消息?