from:http://tcspecial.iteye.com/blog/1972740
1.首先我们应该安装unixodbc
brew install unixodbc
2.然后我们安装freetds:
brew install freetds --with-unixodbc
3.然后我们需要先配置freetds中的数据源:
应该在 /usr/local/etc/freetds.conf
#A typical Microsoft server
[testdsn] # SQL Server数据源名称,可以任意取有意义的名称
host=192.168.10.22 # 数据库主机
port=1344 #数据库监听端口
tds version=8.0 #默认7.0
4.然后我们有了数据源,应该去odbc中配置odbcinst.ini和odbc.ini
odbcinst.ini的地址,我这里是:
AndyMacBookPro:lib andy$ sudo find / -name odbcinst.ini
Password:
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/unixodbc/2.3.2/etc/odbcinst.ini
/usr/local/etc/odbcinst.ini
AndyMacBookPro:lib andy$ ll /usr/local/etc/odbcinst.ini
lrwxr-xr-x 1 andy admin 41 6 30 20:41 /usr/local/etc/odbcinst.ini@ -> ../Cellar/unixodbc/2.3.2/etc/odbcinst.ini
AndyMacBookPro:lib andy$
odbcinst.ini中的libtdsodbc.so的路径要自己确定,我这里是位于:
#Driver=/usr/local/freetds/lib/libtdsodbc.so #指定TDS驱动路径
Driver=/usr/local/Cellar/freetds/0.91/lib/libtdsodbc.so
odbcinst.ini:
[FREETDS]
Description=freetds driver
Driver=/usr/local/freetds/lib/libtdsodbc.so #指定TDS驱动路径
Trace=yes
TraceFile=/tmp/odbc.log # 启用ODBC日志记录
odbc.ini:
[testdsn] # 数据源名称
Driver=FREETDS # 指向odbcinst.ini的驱动配置
Description=MSSQL Server
Servername=testdsn # 数据源名称
Database=sqlscada #数据库名称
然后就配置结束了,我们可以是用freetds+unixodbc访问mssql了~~~
之前碰到了问题,freetds编译之后一直找不到libtdsodbc.so的问题,现在终于明白,
要先安装unixodbc,然后要在brew安装freetds的时候一定要加上:
brew install freetds--with-unixodbc
这样就可以了!
yes!
如果我们想要使用php来连接mssql数据库,可能会有问题:
因为我们的php的mssql扩展不存在,无法连接mssql数据库,该怎么办呢?
var_dump(function_exists(mssql_connect));
求助brew:
AndyMacBookPro:lib andy$ brew search php54
homebrew/php/php54-amqp homebrew/php/php54-proctitle
homebrew/php/php54-apc homebrew/php/php54-propro
homebrew/php/php54-apcu homebrew/php/php54-protobuf
homebrew/php/php54-augmentedtypes homebrew/php/php54-pspell
homebrew/php/php54-blitz homebrew/php/php54-pthreads
homebrew/php/php54-boxwood homebrew/php/php54-raphf
homebrew/php/php54-chdb homebrew/php/php54-redis
homebrew/php/php54-couchbase homebrew/php/php54-redland
homebrew/php/php54-crypto homebrew/php/php54-riak
homebrew/php/php54-dbase homebrew/php/php54-runkit
homebrew/php/php54-dbus homebrew/php/php54-scrypt
homebrew/php/php54-dmtx homebrew/php/php54-snappy
homebrew/php/php54-ev homebrew/php/php54-solr
homebrew/php/php54-gearman homebrew/php/php54-sphinx
homebrew/php/php54-geoip homebrew/php/php54-spl-types
homebrew/php/php54-gmagick homebrew/php/php54-ssh2
homebrew/php/php54-graphdat homebrew/php/php54-stats
homebrew/php/php54-htscanner homebrew/php/php54-stemmer
homebrew/php/php54-http homebrew/php/php54-sundown
homebrew/php/php54-igbinary homebrew/php/php54-svm
homebrew/php/php54-imagick homebrew/php/php54-swoole
homebrew/php/php54-inclued homebrew/php/php54-thrift
homebrew/php/php54-intl homebrew/php/php54-tidy
homebrew/php/php54-ioncubeloader homebrew/php/php54-timezonedb
homebrew/php/php54-jsmin homebrew/php/php54-tokyotyrant
homebrew/php/php54-judy homebrew/php/php54-twig
homebrew/php/php54-leveldb homebrew/php/php54-uploadprogress
homebrew/php/php54-libevent homebrew/php/php54-uuid
homebrew/php/php54-libvirt homebrew/php/php54-varnish
homebrew/php/php54-lz4 homebrew/php/php54-vld
homebrew/php/php54-lzf homebrew/php/php54-wbxml
homebrew/php/php54-mailparse homebrew/php/php54-xcache
homebrew/php/php54-mcrypt homebrew/php/php54-xdebug
homebrew/php/php54-memcache homebrew/php/php54-xhgui
homebrew/php/php54-memcached homebrew/php/php54-xhp
homebrew/php/php54-midgard2 homebrew/php/php54-xhprof
homebrew/php/php54-mongo homebrew/php/php54-xmldiff
homebrew/php/php54-mosquitto homebrew/php/php54-yac
homebrew/php/php54-msgpack homebrew/php/php54-yaf
homebrew/php/php54-mysqlnd_ms homebrew/php/php54-yaml
homebrew/php/php54-oauth homebrew/php/php54-yar
homebrew/php/php54-opcache homebrew/php/php54-yaz
homebrew/php/php54-parsekit homebrew/php/php54-yp
homebrew/php/php54-pcntl homebrew/php/php54-yrmcds
homebrew/php/php54-pdflib homebrew/php/php54-zmq
homebrew/php/php54-pdo-dblib homebrew/php/php54-zookeeper
homebrew/php/php54-pdo-pgsql homebrew/php/php54
homebrew/php/php54-phalcon
AndyMacBookPro:lib andy$
让我们来安装php54-pdo-dblib:
AndyMacBookPro:lib andy$ brew install homebrew/php/php54-pdo-dblib
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-php'...
remote: Reusing existing pack: 6225, done.
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 6235 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (6235/6235), 1.25 MiB | 271.00 KiB/s, done.
Resolving deltas: 100% (3901/3901), done.
Checking connectivity... done.
Tapped 408 formulae
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-dupes'...
remote: Reusing existing pack: 1270, done.
remote: Total 1270 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1270/1270), 251.63 KiB | 28.00 KiB/s, done.
Resolving deltas: 100% (682/682), done.
Checking connectivity... done.
Tapped 38 formulae
Error: No available formula for zlib (dependency of php54-pdo-dblib)
Please tap it and then try again: brew tap homebrew/dupes
Searching taps...
AndyMacBookPro:lib andy$
AndyMacBookPro:lib andy$ brew tap homebrew/dupes
Warning: Already tapped!
AndyMacBookPro:lib andy$ brew tap homebrew/php
Warning: Already tapped!
AndyMacBookPro:lib andy$ brew install php54-pdo-dblib
Error: You must `brew link freetds' before php54-pdo-dblib can be installed
AndyMacBookPro:lib andy$
AndyMacBookPro:lib andy$ brew link freetds
Linking /usr/local/Cellar/freetds/0.91...
Error: Could not symlink etc/pool.conf
Target /usr/local/etc/pool.conf
already exists. You may want to remove it:
rm /usr/local/etc/pool.conf
To force the link and overwrite all conflicting files:
brew link --overwrite freetds
To list all files that would be deleted:
brew link --overwrite --dry-run freetds
AndyMacBookPro:lib andy$ brew link freetds
Linking /usr/local/Cellar/freetds/0.91...
Error: Could not symlink bin/bsqldb
Target /usr/local/bin/bsqldb
already exists. You may want to remove it:
rm /usr/local/bin/bsqldb
To force the link and overwrite all conflicting files:
brew link --overwrite freetds
To list all files that would be deleted:
brew link --overwrite --dry-run freetds
AndyMacBookPro:lib andy$ brew link --overwrite --dry-run freetds
我们想要安装php54-pdo-dblib,但是:
AndyMacBookPro:/ andy$ brew install php54-pdo-dblib
Error: You must `brew link freetds' before php54-pdo-dblib can be installed
AndyMacBookPro:/ andy$ brew link freetds
Linking /usr/local/Cellar/freetds/0.91...
Error: Could not symlink share/man/man1/bsqldb.1
Target /usr/local/share/man/man1/bsqldb.1
already exists. You may want to remove it:
rm /usr/local/share/man/man1/bsqldb.1
To force the link and overwrite all conflicting files:
brew link --overwrite freetds
To list all files that would be deleted:
brew link --overwrite --dry-run freetds
AndyMacBookPro:/ andy$ clear
AndyMacBookPro:/ andy$ brew link freetds
Linking /usr/local/Cellar/freetds/0.91...
Error: Could not symlink share/man/man1/bsqldb.1
Target /usr/local/share/man/man1/bsqldb.1
already exists. You may want to remove it:
rm /usr/local/share/man/man1/bsqldb.1
To force the link and overwrite all conflicting files:
brew link --overwrite freetds
To list all files that would be deleted:
brew link --overwrite --dry-run freetds
AndyMacBookPro:/ andy$ brew link --overwrite freetds
Linking /usr/local/Cellar/freetds/0.91... 42 symlinks created
AndyMacBookPro:/ andy$
我们可以看到brew link 这次终于成功了,是因为我到了/usr/local/share/ 中删掉了整个freetds-0.91目录才成功的,不然会一直报错。
然后我们终于可以开始安装php54-pdo-dblib了~~
AndyMacBookPro:/ andy$ brew install php54-pdo-dblib
==> Downloading http://www.php.net/get/php-5.4.30.tar.bz2/from/this/mirror
######################################################################## 100.0%
==> PHP_AUTOCONF="/usr/local/opt/autoconf/bin/autoconf" PHP_AUTOHEADER="/usr/local/opt/au
==> ./configure --prefix=/usr/local/Cellar/php54-pdo-dblib/5.4.30 --with-pdo-dblib=/usr/l
==> make
==> Caveats
To finish installing pdo_dblib for PHP 5.4:
* /usr/local/etc/php/5.4/conf.d/ext-pdo_dblib.ini was created,
do not forget to remove it upon extension removal.
* Validate installation via one of the following methods:
*
* Using PHP from a webserver:
* - Restart your webserver.
* - Write a PHP page that calls "phpinfo();"
* - Load it in a browser and look for the info on the pdo_dblib module.
* - If you see it, you have been successful!
*
* Using PHP from the command line:
* - Run "php -i" (command-line "phpinfo()")
* - Look for the info on the pdo_dblib module.
* - If you see it, you have been successful!
==> Summary
�� /usr/local/Cellar/php54-pdo-dblib/5.4.30: 3 files, 32K, built in 7.2 minutes
AndyMacBookPro:/ andy$
但是我们发现我们要装的是不是pdo-dblib这个东西,而是mssql这个扩展,所以,呵呵,上面的事情白做了,从头再来: